2013-07-19 1 views
1

은 내가 호출하는 함수에 대한 MethodMirror을 얻을 수있는 방법어떻게

class RestSimulator { 

@Path("/var") 
void functionOne() { 
    final Type type = this.runtimeType; 
    final InstanceMirror instanceMirror = reflect(this); 
    final ClassMirror classMirror = instanceMirror.type; 

    final MethodMirror methodMirror = ????? 
    var metadata = methodMirror.metadata; 
    var path = metadata.first.reflectee; 

    print(path.toString()): 
    } 
} 

이 말 현재 기능에 대한 MethodMirror을받을 수 있나요 ???

은 [ 이 업데이트] 내가

final MethodMirror methodMirror = functions[const Symbol('functionOne')]; 

뭔가를하지 않고 의미 그래서 아마 주요 질문 : 내가 호출/현재 함수의 기호를 어떻게합니까?

답변

1

AFAIK 런타임시 현재 함수에 대한 참조를 얻는 간단한 방법은 없습니다.

class A { 
    m() { 
    var functionName; 
    try { 
     throw ''; 
    } catch(e, s) { 
     functionName = parseStackTraceToGetMethod(s.toString()); 
    } 
    print(functionName); // displays A.m 
    } 
} 
parseStackTraceToGetMethod(String s) => 
    s.substring(8, s.indexOf("(")); 

main() { 
    new A().m(); 
} 
+0

있자나 ... 당신이 StackTrace에서 이름을 얻을 수 있기 때문에 나는 간단한 말을하지만 정말 추한 무서운 성능을 가지고 - 나쁜에! 빠른 회신을위한 Thx. –

+0

stacktrace로 해킹 할 수있는 해킹 방법이 있을지 모르지만 실제로는 못 생깁니다. –

+0

기능 요청을 신청합니다. 이와 같은 것은 메소드 기반 어노테이션 (런타임 기반)에 필요합니다. 왜 이것이 아직 구현되지 않았는지 조금 혼란 스럽습니다. –