Библиотека dart:mirrors
Базовые возможности рефлексии в Dart с поддержкой интроспекции и динамического вызова.
Интроспекция — это подмножество рефлексии, позволяющее работающей программе исследовать собственную структуру. Например, функция, выводящая имена всех членов произвольного объекта.
Динамический вызов — это возможность оценивать код, который не был явно задан на этапе компиляции, например, вызов метода, имя которого передаётся в качестве аргумента (например, полученного из базы данных или введенного пользователем).
Как интерпретировать документацию этой библиотеки
Как правило, имена объявлений Dart представлены экземплярами класса Symbol. Всякий раз, когда документация говорит об объекте s класса Symbol, обозначающем имя, подразумевается строка, используемая для построения s.
В документации часто используется псевдокод Dart, например, o.x(a), где o и a определены как объекты; на самом деле это означает o'.x(a'), где o' и a' — переменные Dart, привязанные к o и a соответственно. Кроме того, предполагается, что o' и a' являются свежими переменными (то есть отличными от других переменных в программе).
Иногда в документации упоминаются сериализуемые объекты. Объект сериализуем между изолированными контекстами тогда и только тогда, когда он является экземпляром num, bool, String, списком объектов, сериализуемых между изолированными контекстами, или словарем с ключами и значениями, которые все сериализуемы между изолированными контекстами.
Статус: Нестабилен
Библиотека dart:mirrors нестабильна, и её API может незначительно измениться в результате обратной связи пользователей. Эта библиотека поддерживается только Dart VM и доступна только на некоторых платформах.
Классы
- ClassMirror
- ClassMirror отражает класс языка Dart.
- ClosureMirror
- ClosureMirror отражает замыкание.
- CombinatorMirror
- Зеркало комбинатора show/hide, объявленного в зависимости от библиотеки.
- Comment
- Класс, используемый для кодирования комментариев в качестве метаданных.
- DeclarationMirror
- DeclarationMirror отражает сущность, объявленную в Dart-программе.
- FunctionTypeMirror
- FunctionTypeMirror представляет тип функции на языке Dart.
- InstanceMirror
- InstanceMirror отражает экземпляр объекта языка Dart.
- IsolateMirror
- IsolateMirror отражает изолированный контекст.
- LibraryDependencyMirror
- Зеркало импорта или экспорта.
- LibraryMirror
- LibraryMirror отражает библиотеку языка Dart, предоставляя доступ к переменным, функциям и классам библиотеки.
- MethodMirror
- MethodMirror отражает функцию, метод, конструктор, геттер или сеттер языка Dart.
- Mirror
- Mirror отражает некую сущность языка Dart.
- MirrorsUsed
- Аннотация, описывающая использование «dart:mirrors» (ЭКСПЕРИМЕНТАЛЬНО).
- MirrorSystem
- MirrorSystem — основной интерфейс, используемый для отражения набора связанных библиотек.
- ObjectMirror
- ObjectMirror — общий суперинтерфейс для InstanceMirror, ClassMirror и LibraryMirror, представляющий их общие функции.
- ParameterMirror
- ParameterMirror отражает объявление формального параметра Dart.
- SourceLocation
- SourceLocation описывает область сущности в исходном коде Dart.
- TypedefMirror
- TypedefMirror представляет typedef в Dart-программе.
- TypeMirror
- TypeMirror отражает класс, typedef, тип функции или параметр типа языка Dart.
- TypeVariableMirror
- TypeVariableMirror представляет параметр типа обобщенного типа.
- VariableMirror
- VariableMirror отражает объявление переменной языка Dart.
Функции
- currentMirrorSystem(
) → MirrorSystem - Возвращает MirrorSystem для текущего изолированного контекста.
- reflect(
dynamic reflectee) → InstanceMirror - Отражает экземпляр.
- reflectClass(
Type key) → ClassMirror - Отражает объявление класса.
- reflectType(
Type key, [List< Type>? typeArguments]) → TypeMirror - Отражает тип, представленный
key.
Исключения/ошибки
- AbstractClassInstantiationError
- Ошибка, выбрасываемая при попытке создания экземпляра абстрактного класса.
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-mirrors/dart-mirrors-library.html