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