如何使用镜像获取声明的类型? 导入“dart:mirrors”; void main(){ var mirror=反射等级(MyClass); mirror.declarations.forEach((k,v){ 印刷品(k); if(v是可变镜像){ 打印(v.type); } }); } 类MyClass{ 无动力变异; 智力; } //印刷品: 符号(“动态”) “动态”上的TypeMirror 符号(“anInt”) “int”上的类镜像 符号(“MyClass”)

如何使用镜像获取声明的类型? 导入“dart:mirrors”; void main(){ var mirror=反射等级(MyClass); mirror.declarations.forEach((k,v){ 印刷品(k); if(v是可变镜像){ 打印(v.type); } }); } 类MyClass{ 无动力变异; 智力; } //印刷品: 符号(“动态”) “动态”上的TypeMirror 符号(“anInt”) “int”上的类镜像 符号(“MyClass”),dart,dart-mirrors,Dart,Dart Mirrors,是否有一种方法可以获取TypeMirror所引用的类型,以便我想为上述示例中的两个属性返回一个类型为dynamic和类型为int。如果它返回一个类镜像,那么您可以使用ClassMirror.reflectedType获取声明的类型对象 VariableMirror.type将是变量的声明类型,而不是变量所持有的任何值的类型,因此虽然它将是一个类型镜像,但可能不是一个类镜像。它也可以是TypeVariableMirror或TypedefMirror。您可以在输出中看到动态案例的镜像是dynamic

是否有一种方法可以获取TypeMirror所引用的类型,以便我想为上述示例中的两个属性返回一个类型为
dynamic
和类型为
int
。如果它返回一个类镜像,那么您可以使用
ClassMirror.reflectedType
获取声明的类型对象


VariableMirror.type
将是变量的声明类型,而不是变量所持有的任何值的类型,因此虽然它将是一个类型镜像,但可能不是一个类镜像。它也可以是TypeVariableMirror或TypedefMirror。您可以在输出中看到动态案例的镜像是
dynamic
上的类型镜像。所以你必须想办法解决这些问题。例如,没有表示
动态的类型对象,因此必须单独处理。我可能只是将其转换为
对象
。对于TypedefMirrors,您可以返回
函数
。我不确定还有哪些不是子类型的TypeMirror

下面是一些示例代码:

final\u dynamicType=反射类型(动态);
类型getDeclaredType(VariableMirror m){
var t=m.type;
如果(t是ClassMirror)返回t.reflectedType;
if(t为TypedefMirror)返回函数;
if(t==\u dynamicType)返回对象;
抛出新ArgumentError(“我不知道如何处理${t}”);
}