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 的实例,或是一个由跨 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
- ObjectMirror 是 InstanceMirror、ClassMirror 和 LibraryMirror 的一个共同超接口,它表示它们的共享功能。
- 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
- 在尝试实例化抽象类时抛出错误。