通过内省查找Iterable的泛型类型(Set <e>,List <e>,...)</e> </e>

时间:2014-11-06 17:29:27

标签: generics dart dart-mirrors

我没有成功找到Iterable类的通用类型(例如Set<myGenericType>List<myOtherGenericType>)。

例如:

如果instanceMirror.getField(myField).reflecteeSet<Toto>,那么我没有办法通过内省检索类型Toto

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

import 'dart:mirrors';

class A<T> {
  T item;
  List<T> items;
}

main() {
  var m = reflectType(new A<int>().runtimeType);

  var itemType = m.declarations[#item].type as TypeMirror;
  print('type of #item: ${itemType.qualifiedName}');  // type of #item: ClassMirror on 'int'.

  var itemsType = m.declarations[#items].type as ClassMirror;
  print('type of #items: ${itemsType.qualifiedName}');  // type of #items: ClassMirror on 'List'.

  print('type arguments of #items: ${itemsType.typeArguments.map((t) => t.qualifiedName)}');  // type arguments of #items: [TypeVariableMirror on 'T'].
}