dart:mirrors

Dart 中的基本反射,支持内省和动态调用。

内省 是通过它,运行中的程序可以检查自身的结构的一个子集。例如,一个打印出任意对象所有成员名称的函数。

动态调用 指的是评估未在编译时明确指定的代码的能力,例如调用一个名称作为参数传递的方法(因为它是查询数据库或由用户交互式提供的)。

如何解释此库文档

通常,Dart 声明的名称使用 Symbol 类的实例来表示。每当文档提及类 Symbol 的对象 s 表示一个名称时,它意味着构建 s 所使用的字符串。

文档经常使用 Dart 伪代码的符号表示法来滥用记法,例如 o.x(a),其中 o 和 a 被定义为对象;在这种情况下,实际意思是 o'.x(a'),其中 o'a' 是绑定到 oa 的 Dart 变量。此外,o'a' 被假设为新鲜变量(这意味着它们与程序中的任何其他变量都不同)。

有时文档会提到 可序列化 对象。只要对象是 num、bool、String 的实例,或是一个由跨 isolate 可序列化对象组成的列表,或是一个键和值都是跨 isolate 可序列化的映射,这个对象就可以跨 isolate 序列化。

状态:不稳定

dart:mirrors 库是不稳定的,并且可能会根据用户反馈略作更改。此库仅由 Dart VM 支持,并在某些平台上可用。

ClassMirror
ClassMirror 反射 Dart 语言类。
ClosureMirror
ClosureMirror 反射闭包。
CombinatorMirror
对在库依赖项上声明的显示/隐藏组合器的镜像。
DeclarationMirror
DeclarationMirror 反射 Dart 程序中声明的某些实体。
FunctionTypeMirror
FunctionTypeMirror 表示 Dart 语言中函数的类型。
InstanceMirror
InstanceMirror 反射 Dart 语言对象的一个实例。
IsolateMirror
IsolateMirror 反射一个 isolate。
LibraryDependencyMirror
对导入或导出声明的镜像。
LibraryMirror
LibraryMirror 反射 Dart 语言库,提供对库中的变量、函数和类的访问。
MethodMirror
MethodMirror 反射 Dart 语言函数、方法、构造函数、getter 或 setter。
Mirror
Mirror 反射某些 Dart 语言实体。
MirrorSystem
MirrorSystem 是用于在被关联库集上反射的主要界面。
ObjectMirror
ObjectMirrorInstanceMirrorClassMirrorLibraryMirror 的一个共同超接口,它表示它们的共享功能。
ParameterMirror
ParameterMirror 反射 Dart 形式参数声明。
SourceLocation
SourceLocation 描述了实体在 Dart 源代码中的范围。
TypedefMirror
TypedefMirror 表示 Dart 语言程序中的类型定义。
TypeMirror
一个 TypeMirror 用于反映 Dart 语言中的类、typedef、函数类型或类型变量。
TypeVariableMirror
TypeVariableMirror 表示泛型类型的一个类型参数。
VariableMirror
VariableMirror 用于反射 Dart 语言中的变量声明。

函数

currentMirrorSystem() MirrorSystem
返回当前 isolate 的 MirrorSystem。
reflect(dynamic reflectee) InstanceMirror
反射一个对象实例。
reflectClass(Type key) ClassMirror
反映一个类的声明。
reflectType(Type key, [List<Type>? typeArguments]) TypeMirror
反映由 key 表示的类型。

异常 / 错误

AbstractClassInstantiationError
在尝试实例化抽象类时抛出错误。