如何获取当前函数的MethodMirror

时间:2013-07-19 08:34:16

标签: dart dart-mirrors

说我有

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 个答案:

答案 0 :(得分:1)

AFAIK没有简单的方法可以在运行时获取当前函数的引用。

我说简单因为你可以从StackTrace获得这个名字,但它真的很难看并且表现糟糕......

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();
}