这可能是一个愚蠢的问题,很抱歉问这个问题,仅供参考,我是这种东西的新手。
在阅读了有关镜像的文档后,我只能理解镜像 API 就像复制一些实例加上访问一些我不知道何时/为什么使用的方法。
任何人都关心给我一些指示,一些例子会很好。
这可能是一个愚蠢的问题,很抱歉问这个问题,仅供参考,我是这种东西的新手。
在阅读了有关镜像的文档后,我只能理解镜像 API 就像复制一些实例加上访问一些我不知道何时/为什么使用的方法。
任何人都关心给我一些指示,一些例子会很好。
Mirror API 允许您以编程方式(在执行期间)检索有关对象和类型的元数据,并在对象上执行方法。它类似于.NET 或 Java 中的反射。
一个典型的例子是实现插件支持:
假设您定义了一个IPlugin
接口,并希望自动注册PluginManager
实现它的每种类型的实例,而无需显式注册每个新实现。有时您甚至事先不知道所有插件,例如用户是否可以部署自己的插件。
您可以这样做(警告:我从未使用过 Mirror API,因此这是基于 API 文档的高级描述,而不是正确的实现):
MirrorSystem.libraries
获取LibraryMirror
其中每个库的实例MirrorSystem
LibraryMirror
你使用的classes
属性来获取ClassMirror
库中的每个类ClassMirror
使用superinterfaces
获取所有实现的接口IPlugin
您可以创建该类 ( ClassMirror.newInstance
) 的实例并将其注册到插件管理器。如果没有镜像 API,您将无法枚举所有类型、查找它们实现的接口(无需创建对象)或创建您事先不知道的类型的实例。
老实说,我不确定 Dart 中镜像 API 的当前状态是什么,我相信它还没有完成,但我可能错了。