dart:mirrors 库
支持反射和动态调用的 Dart 基本反射。
反射 是运行中的程序检查自身结构的那部分。例如,打印出任意对象的全部成员名称的函数。
动态调用 指的是评估在编译时未明确指定的代码的能力,例如调用一个作为参数提供的方法(因为它在数据库中查找,或者由用户交互式提供)。
如何解释此库的文档
通常,Dart 声明的名称使用 Symbol 类的实例表示。当文档提到一个 Symbol 类的 s 对象时,表示用来构建 s 的字符串。
文档经常使用 Dart 伪代码的符号表示法,例如 o.x(a)
,其中 o 和 a 被定义为对象;在这些情况下真正意味着的是 o'.x(a')
,其中 o' 和 a' 是分别绑定到 o 和 a 的 Dart 变量。此外,o' 和 a' 被假定为新鲜变量(意味着它们与程序中的任何其他变量都不同)。
有时文档会提到 可序列化 对象。一个对象只有在它是 num、bool、String、可跨隔离序列化的对象列表或键值对都是可跨隔离序列化的映射的实例时,才能在隔离之间序列化。
状态:不稳定
dart:mirrors 库是不稳定的,并且它的 API 可能会根据用户反馈略有变化。此库仅由 Dart VM 支持,并且仅在某些平台上可用。
类
- ClassMirror
- ClassMirror 反射 Dart 语言类。
- ClosureMirror
- ClosureMirror 反射闭包。
- CombinatorMirror
- 在库依赖项上声明的 show/hide 组合器的镜像。
- DeclarationMirror
- DeclarationMirror 反射 Dart 程序中声明的某个实体。
- FunctionTypeMirror
- FunctionTypeMirror 表示 Dart 语言中函数的类型。
- InstanceMirror
- InstanceMirror 反射 Dart 语言对象的一个实例。
- IsolateMirror
- IsolateMirror 反射隔离。
- LibraryDependencyMirror
- 对导入或导出声明的镜像。
- LibraryMirror
- LibraryMirror 反射 Dart 语言库,提供对库中变量、函数和类的访问。
- MethodMirror
- MethodMirror 反射 Dart 语言函数、方法、构造函数、getter 或 setter。
- Mirror
- Mirror 反射 Dart 语言实体。
- MirrorSystem
- MirrorSystem 是用于对一组相关库进行反射的主要接口。
- ObjectMirror
- ObjectMirror 是 InstanceMirror、ClassMirror 和 LibraryMirror 的公共超接口,它表示它们的共享功能。
- ParameterMirror
- 一个 ParameterMirror 反射 Dart 形参声明。
- SourceLocation
- 一个 SourceLocation 描述了 Dart 源代码中一个实体的范围。
- TypedefMirror
- 一个 TypedefMirror 代表 Dart 语言程序中的 typedef。
- 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
- 尝试实例化抽象类时抛出的错误。