当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Dart MirrorsUsed.override用法及代码示例


dart:mirrors 库中MirrorsUsed.override 属性的用法介绍如下。

用法:

dynamic
          override
final

库名称列表或"*"。

当用作"dart:mirrors" 导入的元数据时,此元数据不适用于使用注释的库,而是适用于其他库(如果使用"*",则为所有库)。

以下文本是非规范性的:

Dart2js 目前支持以下格式来指定库:

  • 一个常量 List 包含表示库名称的 String 常量。
  • 单个 String 常量,其值为以逗号分隔的库名称列表。

从概念上讲,带有overrideMirrorsUsed 注释与将注释直接放置在每个引用库中的dart:mirrors 的导入上具有相同的效果。因此,如果该库之前没有 MirrorsUsed 注释,则其对 dart:mirrors 的无条件导入将被带注释的导入覆盖。

请注意,与多个显式 MirrorsUsed 注释一样,在具有现有 MirrorsUsed 注释的库上使用覆盖是附加的。也就是说,反射目标的整体集是由原始注释和覆盖 MirrorsUsed 注释产生的反射目标的联合。

override 的使用仅对导入了 dart:mirrors 而没有注释的库有意义,因为否则它在没有 override 参数的情况下会以完全相同的方式工作。

虽然注释将应用于给定的目标库,但 symbolstargetsmetaTargets 仍在注释范围内进行评估。因此,要从库 foo 中选择目标,必须使用限定名称,或者,如果目标在当前范围内可见,则可以引用其类型。

例如,以下代码将库 foo 中的所有目标标记为可反射,这些目标使用同一库中的 Reflectable 类具有元数据注释。

@MirrorsUsed(metaTargets: "foo.Reflectable", override: "foo")

但是,以下代码将需要使用当前库中的Reflectable 类。

@MirrorsUsed(metaTargets: "Reflectable", override: "foo")

相关用法


注:本文由纯净天空筛选整理自dart.dev大神的英文原创作品 override property。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。