Spec-Zone.ru › Dart 1

dart:mirrors

свойство override

dynamic override
final

Список имен библиотек или "*".

При использовании в качестве метаданных для импорта "dart:mirrors" эти метаданные не применяются к библиотеке, в которой используется аннотация, а вместо этого применяются к другим библиотекам (ко всем библиотекам, если используется "*").

Следующий текст не является нормативным:

Dart2js в настоящее время поддерживает следующие форматы для указания библиотек:

  • Константный List, содержащий константы String, представляющие имена библиотек.
  • Одиночная константа String, значение которой представляет собой список имен библиотек, разделенных запятыми.

Концептуально, аннотация MirrorsUsed с override имеет тот же эффект, что и размещение аннотации непосредственно на импорте dart:mirrors в каждой из указанных библиотек. Таким образом, если библиотека ранее не имела аннотации MirrorsUsed, ее безусловный импорт dart:mirrors переопределяется аннотированным импортом.

Обратите внимание, что, как и несколько явных аннотаций MirrorsUsed, использование override в библиотеке с существующей аннотацией MirrorsUsed является аддитивным. То есть общее множество рефлективных целей представляет собой объединение рефлективных целей, возникающих из исходных и переопределяющих аннотаций MirrorsUsed.

Использование override имеет смысл только для библиотек, которые имеют импорт dart:mirrors без аннотации, поскольку в противном случае он будет работать точно так же без параметра override.

Хотя аннотация будет применяться к указанным целевым библиотекам, symbols, targets и metaTargets все еще оцениваются в области действия аннотации. Таким образом, для выбора цели из библиотеки foo, необходимо использовать квалифицированное имя или, если цель видна в текущей области видимости, можно сослаться на ее тип.

Например, следующий код помечает все цели в библиотеке foo как отражаемые, которые имеют аннотацию метаданных, используя класс Reflectable из той же библиотеки.

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

Однако в следующем коде потребуется использовать класс Reflectable из текущей библиотеки.

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

© 2012 the Dart project authors
Licensed under the Creative Commons Attribution-ShareAlike License v4.0.
https://api.dartlang.org/stable/1.24.3/dart-mirrors/MirrorsUsed/override.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API