Библиотека 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 и доступна лишь на некоторых платформах.
Классы
- ClassMirror
- ClassMirror отражает класс языка Dart.
- ClosureMirror
- ClosureMirror отражает замыкание.
- CombinatorMirror
- Зеркало комбинатора show/hide, объявленного в зависимости библиотеки.
- DeclarationMirror
- DeclarationMirror отражает сущность, объявленную в программе Dart.
- FunctionTypeMirror
- FunctionTypeMirror представляет тип функции в языке Dart.
- InstanceMirror
- InstanceMirror отражает экземпляр объекта языка Dart.
- IsolateMirror
- IsolateMirror отражает изолят.
- LibraryDependencyMirror
- Зеркало объявления импорта или экспорта.
- LibraryMirror
- LibraryMirror отражает библиотеку языка Dart и предоставляет доступ к её переменным, функциям и классам.
- MethodMirror
- MethodMirror отражает функцию, метод, конструктор, геттер или сеттер языка Dart.
- Mirror
- Mirror отражает сущность языка Dart.
- 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.19.6/dart-mirrors/dart-mirrors-library.html