Dart 如何在飞镖课上得到一个类镜?
如何使用镜像API获取类镜像?我尝试使用顶级的Dart 如何在飞镖课上得到一个类镜?,dart,dart-mirrors,Dart,Dart Mirrors,如何使用镜像API获取类镜像?我尝试使用顶级的reflect()函数,但它使用一个类实例,而不是一个类作为参数。您可以从该类的实例,或从定义该类的库,或直接使用类名获得一个类镜像 从实例或InstanceMirror获取类镜像 要获取有关类的信息,您需要一个类镜像。获得 ClassMirror,首先需要类的实例或 定义类的库 如果您有一个实例,可以使用顶级的reflectClass()函数 在dart:mirrors库中定义。此函数返回一个类镜像 对象: var classMirror=refl
reflect()
函数,但它使用一个类实例,而不是一个类作为参数。您可以从该类的实例,或从定义该类的库,或直接使用类名获得一个类镜像
从实例或InstanceMirror获取类镜像
要获取有关类的信息,您需要一个类镜像。获得
ClassMirror,首先需要类的实例或
定义类的库
如果您有一个实例,可以使用顶级的reflectClass()
函数
在dart:mirrors
库中定义。此函数返回一个类镜像
对象:
var classMirror=reflectClass(myObj.runtimeType);
MirrorSystem.getName(classMirror.simpleName);/'MyClass'
如果您有InstanceMirror,请使用InstanceMirror的type
属性获取
类镜像:
var myObj=new MyClass();
var instanceMirror=reflect(myObj);
var classMirror=instanceMirror.type;
MirrorSystem.getName(classMirror.simpleName);/'MyClass'
从库镜像获取类镜像
如果您知道定义类的库的名称,则可以获取
在该库上创建镜像,然后使用库镜像的classes
属性
获取类镜像。classes
属性返回一个映射,其中
是类名(用符号表示),值是关联的
类镜像对象
例如,这里是如何在StringBuffer类上获得ClassMirror的
在“省道:核心”库中定义:
var mirrorSystem=currentMirrorSystem();
var libraryMirror=mirrorSystem.findLibrary(常量符号('dart.core'))。首先;
var classMirror=libraryMirror.declarations[const-Symbol('StringBuffer');
MirrorSystem.getName(classMirror.simpleName);/'StringBuffer'
ClassMirror ClassMirror=reflectClass(Foo);
非常正确,我修改了答案的开头,以允许使用此方法。