Перехват шаблона T4 - PullRequest
       0

Перехват шаблона T4

0 голосов
/ 13 декабря 2010

Мне интересно, знает ли кто-нибудь о каких-либо системах перехвата методов, основанных на шаблонах T4?

Мы начинаем писать мобильные приложения (в настоящее время с MonoTouch для IOS). У нас есть очень хороший базовый набор функций DI / IoC, и я хотел бы использовать это при разработке для новой платформы. Поскольку генерация кода времени выполнения Reflection.Emit не поддерживается, я надеюсь использовать шаблоны T4 для реализации функциональности динамического перехвата (+ TinyIoC в качестве контейнера для разрешения).

В настоящее время мы используем Castle Windsor (и намерены продолжать делать это для нашей SL и полной разработки .NET), но все специфические связи Windsor полностью инкапсулированы, поэтому при наличии подходящего решения T4 это не должно быть сложно реализовать адаптер, использующий реализацию на основе T4 вместо Windsor.

1 Ответ

1 голос
/ 22 декабря 2010

Если я правильно понимаю, вы хотите использовать T4 для генерации кода на лету (во время выполнения).Я не знаю ни одной системы, которая делает это, но я не думаю, что было бы очень сложно написать такую ​​вещь.

Что вам нужно сделать, это проинструктировать C # (или любой другой .NETкомпилятор) для компиляции некоторого кода и генерации сборки.Когда это будет сделано, вам нужно загрузить эту сборку в свой домен приложений.После этого вы можете использовать типы в этой динамически загружаемой сборке.

Механизм шаблонов T4 является (если я не ошибаюсь) частью Visual Studio, поэтому сложная часть состоит в том, чтобы инструктировать механизм шаблонов генерироватькод, возможно, без вашего приложения, чтобы нуждаться в зависимости от Visual Studio или даже запустить его (это было бы ужасно).

Если вам не нужны все возможности T4 (что вполне вероятно), вы также можетеВыложите немного кода .NET самостоятельно, сохраните его в файле и дайте указание компилятору C # сгенерировать сборку для вас.

Удачи.

...