Dart 通过getField镜像获取类变量的值

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

我试图了解镜像Api是如何工作的。具体来说,如何使用
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