Я только что наткнулся на ObjectCastor , где цель:
По сути, он генерирует новый прокси
класс с использованием System.CodeDom
машина, которая оборачивает sourceType
и реализует interfaceType
интерфейс. С помощью .NET
Отражение, это идет по членам
типа interfaceType и
генерирует соответствующие члены в
класс прокси. После этого это
компилирует сгенерированный класс, используя
класс CodeDomProvider и вызов
метод CompileAssemblyFromDom. В
этот момент, сгенерированный класс
скомпилировано, и последнее, что нужно сделать, это
создать новый экземпляр прокси
класс и предоставить исходный объект как
конструктор. Полный исходный код
для служебного класса и демо
Приложение доступно выше в
раздел загрузок.
Эта техника теперь используется в CS Script . Из справочного файла CSScript:
В версии 2.3.3 CS-Script вводит
Новый интерфейс хостинга скриптов
Выравнивание, которое является привлекательным
альтернатива интерфейсу
наследование при загрузке / доступе
скрипты через интерфейсы.
Эта модель позволяет манипулировать с
сценарий, "выравнивая" его к
соответствующий интерфейс (DuckTyping).
Важным аспектом этого подхода является
что выполнение скрипта
полностью безопасен (как и любой
скрипт доступен через интерфейс)
но что еще более важно сценарий
не должен реализовывать
интерфейс, используемый хостом
приложение. В каком-то смысле Интерфейс
Выравнивание является принудительным приведением типов:
Тип интерфейса к интерфейсу возможен как
Пока объект имеет все методы
определяется в интерфейсе. это
перспективная техника позволяет высокий уровень
развязки между хозяином и
Скрипт бизнес-логики без какого-либо типа
компромисс безопасности.