0

这可能是一个愚蠢的问题,很抱歉问这个问题,仅供参考,我是这种东西的新手。

在阅读了有关镜像的文档后,我只能理解镜像 API 就像复制一些实例加上访问一些我不知道何时/为什么使用的方法。

任何人都关心给我一些指示,一些例子会很好。

4

1 回答 1

4

Mirror API 允许您以编程方式(在执行期间)检索有关对象和类型的元数据,并在对象上执行方法。它类似于.NET 或 Java 中的反射

一个典型的例子是实现插件支持:

假设您定义了一个IPlugin接口,并希望自动注册PluginManager实现它的每种类型的实例,而无需显式注册每个新实现。有时您甚至事先不知道所有插件,例如用户是否可以部署自己的插件。

您可以这样做(警告:我从未使用过 Mirror API,因此这是基于 API 文档的高级描述,而不是正确的实现):

  • 您首先使用MirrorSystem.libraries获取LibraryMirror其中每个库的实例MirrorSystem
  • 然后对于每个LibraryMirror你使用的classes属性来获取ClassMirror库中的每个类
  • 为每次ClassMirror使用superinterfaces获取所有实现的接口
  • 如果有任何已实现的接口,IPlugin您可以创建该类 ( ClassMirror.newInstance) 的实例并将其注册到插件管理器。

如果没有镜像 API,您将无法枚举所有类型、查找它们实现的接口(无需创建对象)或创建您事先不知道的类型的实例。

老实说,我不确定 Dart 中镜像 API 的当前状态是什么,我相信它还没有完成,但我可能错了。

于 2013-05-17T08:06:52.323 回答