Публичный интерфейс библиотеки extends
Аннотации
Классы
АннотацияИнтерфейс
ПриСозданииОбъекта
bsl
// Аннотация для указания, что класс является интерфейсом.
// Используется для семантического обозначения интерфейсов.
//
// Интерфейс представляет собой класс с процедурами и функциями,
// которые должны быть реализованы в классах, использующих этот интерфейс.
//
// Интерфейс может расширять другие интерфейсы через аннотацию &Расширяет,
// что означает наследование интерфейсов.
//
Процедура ПриСозданииОбъекта()АннотацияРасширяет
ПриСозданииОбъекта
bsl
// Аннотация для указания, что промаркированный класс расширяет/наследует другой тип.
// Используется при связывании объекта-наследника и объекта-родителя с помощью ПостроительНаследника.
//
// Параметры:
// Значение - Строка - Имя типа, который расширяет промаркированный класс.
//
Процедура ПриСозданииОбъекта(Значение)ИмяТипаРодителя
bsl
// Имя типа, который расширяет промаркированный класс.
//
// Возвращаемое значение:
// Строка
//
Функция ИмяТипаРодителя() ЭкспортАннотацияРеализует
ПриСозданииОбъекта
bsl
// Аннотация для указания, что класс должен реализовать указанный интерфейс.
// Используется для проверки наличия методов интерфейса в классе через ВалидаторАннотаций.
//
// Интерфейс представляет собой класс с процедурами и функциями.
//
// Параметры:
// Значение - Строка - Имя интерфейса
//
Процедура ПриСозданииОбъекта(Значение)ИмяИнтерфейса
bsl
// Имя интерфейса, который реализует промаркированный класс.
//
// Возвращаемое значение:
// Строка
//
Функция ИмяИнтерфейса() ЭкспортАннотацияРодитель
ПриСозданииОбъекта
bsl
// Маркерная аннотация, показывающая, что в данное поле внедряется ссылка на объект, от которого наследуется
// текущий объект.
//
// Применяется только на поле класса.
//
Процедура ПриСозданииОбъекта()ВалидаторРеализации
ПриСозданииОбъекта
bsl
// Класс для проверки корректности реализации интерфейсов объектом
//
// Параметры:
// КонтейнерАннотаций - КонтейнерАннотаций - задаваемый из-вне контейнер аннотаций.
// Позволяет использовать общий контейнер аннотаций для всего приложения.
Процедура ПриСозданииОбъекта(КонтейнерАннотаций = Неопределено)ИнтерфейсыРеализованыКорректно
bsl
// Проверить, что объект реализует все интерфейсы, указанные в аннотации &Реализует.
// Если объект не реализует какой-либо из интерфейсов, будет вызвано исключение.
//
// Параметры:
// ПроверяемыйОбъект - Сценарий, Тип - объект, реализующий интерфейсы.
//
Процедура ИнтерфейсыРеализованыКорректно(ПроверяемыйОбъект) ЭкспортПостроительНаследника
ПриСозданииОбъекта
bsl
// Класс, выполняющий связывание объекта-наследника с объектом-родителем и создающий класс-обертку (декоратор)
// с общим интерфейсом.
//
// Параметры:
// ОбъектНаследник - Сценарий - объект-наследник. Должен содержать аннотацию &Расширяет.
// ОбъектРодитель - Сценарий - объект-родитель.
// МетодыНаследника - ТаблицаЗначений - методы объекта-наследника, как они возвращаются рефлектором.
// Может использоваться для сокращения использования рефлектора или
// необходимости дополнительной обработки методов, например, разворачивания
// аннотаций библиотекой annotations.
// КонструкторНаследника - СтрокаТаблицыЗначений - данные о конструкторе объекта-наследника,
// как они возвращаются рефлектором.
Процедура ПриСозданииОбъекта(ОбъектНаследник, ОбъектРодитель, МетодыНаследника = Неопределено, КонструкторНаследника = Неопределено)СоздатьДекоратор
bsl
// Выполняет связывание объекта-наследника с объектом-родителем и возвращает ПостроительДекоратора,
// который содержит методы и поля объекта-наследника и методы объекта-родителя.
//
// Поле объекта-наследника, помеченное аннотаций &Родитель, будет заполнено объектом-родителем.
// Если аннотация не найдена, будет для хранения родителя будет создано поле с именем "_ОбъектРодитель".
//
// Объект-наследник может содержать методы, совпадающие по именам с методами объекта-родителя. При необходимости
// метод объекта-наследника может вызывать метод объекта-родителя через поле-родитель.
//
// Объект-наследник должен иметь аннотацию &Расширяет, в которой указано имя типа объекта-родителя.
//
// Возвращаемое значение:
// ПостроительДекоратора - полностью сконфигурированный построитель декоратора, из которого можно получить
// итоговый класс-наследник.
//
Функция СоздатьДекоратор() ЭкспортИмяПоляОбъектРодитель
bsl
// Получить имя поля, в котором хранится объект-родитель.
// Возвращается имя поля, помеченное аннотацией &Родитель, или "_ОбъектРодитель", если аннотация не найдена.
//
// Возвращаемое значение:
// Строка
//
Функция ИмяПоляОбъектРодитель() ЭкспортПостроить
bsl
// Выполнить связывание объекта-наследника с объектом-родителем и вернуть результирующий класс
// с общим интерфейсом.
// См. СоздатьДекоратор()
//
// Возвращаемое значение:
// Сценарий - класс-наследник с общим интерфейсом
//
Функция Построить() ЭкспортУстановитьКонтейнерАннотаций
bsl
// Сеттер для контейнера аннотаций.
// Позволяет использовать общий контейнер аннотаций для всего приложения.
//
// Параметры:
// КонтейнерАннотаций - КонтейнерАннотаций - устанавливаемый контейнер аннотаций.
//
Процедура УстановитьКонтейнерАннотаций(КонтейнерАннотаций) Экспорт