dart,如何使用反射获得泛型类型的方法参数?

时间:2014-05-19 17:47:14

标签: reflection dart dart-mirrors

我有测试应用程序:

import 'dart:mirrors';

class A {
  void eventHandlerInt(List<int> x){}
  void eventHandlerBool(List<bool> x){}
} 

void testMirrors(aFunction){
  ClosureMirror mir = reflect(aFunction);
  var param = mir.function.parameters.first;
  //How to get the Type T of List<T> of the first param?
}

void main() {
  var a = new A();
  testMirrors(a.eventHandlerInt);
  testMirrors(a.eventHandlerBool);
}

我希望能够找出传递给testMirrors的方法的第一个参数的泛型类型,因此在上面的示例中它将是int然后{{1} }。这甚至可能吗?如果我检查param,则type属性为null。

1 个答案:

答案 0 :(得分:4)

List<TypeMirror> types = mir.function.parameters.first.type.typeArguments;
param.forEach((e) => print(e.simpleName));

打印

  

符号( “INT”)
  符号( “布尔”)