У меня есть система шаблонов T4 - , выполняемая во время выполнения , а не во время компиляции - которые генерируют скелеты многих классов в моем приложении.Все эти шаблоны находятся в инструменте генератора, который время от времени используется для предварительной генерации новых классов в целевом приложении.Инструмент содержит класс конфигурации, свойства которого параметризуют выходные данные всех шаблонов T4.
Первоначально класс конфигурации был статическим классом.Однако, по мере роста инструмента генератора классов, лучше сделать его не статичным, а создать новый экземпляр для каждого использования.Проблема в том, как передать этот экземпляр экземплярам шаблонов T4.Кажется, что естественным путем является наследование их от общей базы, которая будет обеспечиваться экземпляром класса конфигурации.
Проблема в том, что класс TextTransformation
, который был бы унаследован моим пользовательским базовым классом T4находится в сборке, которая (согласно источникам, таким как этот вопрос SO ) не поставляется с Visual Studio 2010. Вместо этого она предоставляется в составе Visual Studio 2010 SDK.
Создан базовый классVS2010, хотя сам по себе не имеет предка, не является частичным, поэтому нет способа «внедрить» пользовательского предка через другое частичное объявление.
Таким образом вопрос: Есть ли способнаследовать исполняемый во время выполнения шаблон T4 из пользовательского базового класса без необходимости установки Visual Studio 2010 SDK?
Отказ от ответственности: Я не очень знаком с T4, поэтому яможет быть совершенно неправильно о том, как подойти к проблеме.Поэтому любые другие архитектурные советы приветствуются, хотя моя цель не состоит в том, чтобы создать суперархитектированный генератор - это просто вспомогательный инструмент, который должен быть простым и понятным для случайного читателя.