Dart 通过getField镜像获取类变量的值
我试图了解镜像Api是如何工作的。具体来说,如何使用Dart 通过getField镜像获取类变量的值,dart,dart-mirrors,Dart,Dart Mirrors,我试图了解镜像Api是如何工作的。具体来说,如何使用getField从字段的符号中获取字段的值 对于getField方法,它应该适用于任何作为getter的Symbol,并且可能是隐式的。因此我理解,getField可以直接在字段上调用。在下面的代码示例中,应该隐式定义a和b的getter 但是代码抛出,抱怨它找不到任何getter。 在异常时中断:对象为NoSuchMethodError,并在本机“ClassMirror\u invokeGetter”上中断“dart:mirrors-patc
getField
从字段的符号中获取字段的值
对于getField
方法,它应该适用于任何作为getter的Symbol
,并且可能是隐式的。因此我理解,getField
可以直接在字段上调用。在下面的代码示例中,应该隐式定义a
和b
的getter
但是代码抛出,抱怨它找不到任何getter。
在异常时中断:对象为NoSuchMethodError
,并在本机“ClassMirror\u invokeGetter”上中断“dart:mirrors-patch\u mirrors\u impl.dart”代码>
抽象类检查已初始化{
bool hasNull(){
var im=反映(此);
var-cm=im.type;
其中((dm)=>dm是VariableMirror)
.forEach((vm){
打印(cm.getField(vm.simpleName));
});
//如果字段为null,则返回true
//如果没有字段为null,则返回false
}
}
类测试扩展了CheckInitialized{
INTA;
b串;
}
void main(){
var a=新测试();
print(a.hasNull());//true
}
必须明确定义一个getter才能使其工作,这感觉是错误的,但我不明白为什么这不起作用。当然,mirrors.dart仍在不断变化,因此我想这是针对v1.2.0的。您正在尝试在类mirror上运行getField
。由于a
和b
是实例字段,getField
失败。如果将a
和b
更改为static
,getField
调用将起作用
或者,您需要在实例镜像(im
)上调用getField
)