Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 如何在飞镖课上得到一个类镜?_Dart_Dart Mirrors - Fatal编程技术网

Dart 如何在飞镖课上得到一个类镜?

Dart 如何在飞镖课上得到一个类镜?,dart,dart-mirrors,Dart,Dart Mirrors,如何使用镜像API获取类镜像?我尝试使用顶级的reflect()函数,但它使用一个类实例,而不是一个类作为参数。您可以从该类的实例,或从定义该类的库,或直接使用类名获得一个类镜像 从实例或InstanceMirror获取类镜像 要获取有关类的信息,您需要一个类镜像。获得 ClassMirror,首先需要类的实例或 定义类的库 如果您有一个实例,可以使用顶级的reflectClass()函数 在dart:mirrors库中定义。此函数返回一个类镜像 对象: var classMirror=refl

如何使用镜像API获取类镜像?我尝试使用顶级的
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);

非常正确,我修改了答案的开头,以允许使用此方法。