當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。