свойство override
dynamic overrideСписок имен библиотек или "*".
При использовании в качестве метаданных для импорта "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