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