Как уже упоминалось в Flextra, одним из вариантов является использование отражения метаданных во время выполнения и построение вашей среды вокруг этого.
Это похоже на то, как Lazy Loading внедряется в dpHibernate (Flex Lazy Loading framework, который яразработчик).В частности, чтобы получить доступ к геттерам и сеттерам и перехватывать их с помощью ловушек для отложенной загрузки, мы используем метатег [Managed]
и настраиваем его поведение , которое заставляет компилятор создавать для вас ловушки.
Это что-то вроде хака, но это может вам помочь.(И мы создали довольно успешный фреймворк поверх этого хака).
В качестве альтернативы, вы можете написать свои собственные расширения компилятора, которые используют ваши метаданные и выполняют модификации AST для генерации этого кода для вас.Тем не менее, это не для слабонервных.
Хотя зацепки для этих расширений существуют уже много лет, очень мало есть о том, как это сделать, и вам придется работатьэто, просматривая существующий исходный код.
К счастью, сотрудники Adobe едят свою собачью еду в отношении расширений компилятора, и некоторые функции Flex 4 (такие как Skinning) были реализованы.в качестве расширений компилятора, предоставляя вам еще несколько примеров для работы.
Исходный код компилятора доступен здесь. Может быть стоит взглянуть на код для Управляемого расширения как хорошая отправная точка.
В качестве альтернативы взгляните на расширение SkinPart , расширение HostComponent или [ Embed ] (которое Клемент Вонг - первоначальный разработчиккомпилятор - однажды упомянутый как лучшая отправная точка в понимании расширений компилятора).