Механизм отражения
Механизм отражения позволяет получить информацию об экземплярах, не зная заранее их тип. Во встроенном языке в пространстве Стд::Отражение
реализован ряд типов, которые позволяют, например:
- получать свойства экземпляров, перебирать их, читать и устанавливать их значения;
- создавать экземпляры типов, имена которых вычисляются во время работы приложения.
Перебор свойств типа
пер Тип = Контрагенты.ПолучитьТип()
для Свойство из Тип.ПолучитьСвойства()
знч Имя = Свойство.Имя
знч Типы = Свойство.Типы
знч ЧтениеЗначения = &Свойство.Получить
знч ЗаписьЗначения = &Свойство.Установить
;
Сериализация
для каждого Объект из МассивОбъектов
пер Свойства = Объект.ПолучитьТип().ПолучитьСвойства()
для каждого Свойство из Свойства
ФайлПриемник.Записать(Свойство.Имя, Свойство.Получить(Объект))
;
;
Обобщенный тип
Чтобы получить доступ к параметрам обобщенного типа, используется свойство ПараметрыТипа типа ЧитаемыйМассив<ЧитаемоеМно жество<Тип>>
, т. е. массив, каждый элемент которого содержит множество типов, соответствующих одному из параметров.
Так, например, для типа Соответствие
, параметром которого является составной тип, свойство ПараметрыТипа
примет следующее значение:
знч Соответствие = новый Соответствие<Строка, Число|Булево>
знч ПараметрыТипаСоответствия = Соответствие.ПолучитьТип().ПараметрыТипа
знч ТипыКлюча = ПараметрыТипаСоответствия[0] // множество с одним элементом: Тип<Строка>
знч ТипыЗначения = ПараметрыТипаСоответствия[1] // множество из двух элементов: Тип<Число> и Тип<Булево>
Если это объект простого типа, то при обращении к полю ОбъектТипа.ПараметрыТипа
вернется пустой массив.