【发布时间】:2011-01-22 06:08:39
【问题描述】:
我有一个 T4 模板系统——在运行时执行,而不是在编译时——它在我的应用程序中生成许多类的骨架。所有这些模板都驻留在生成器工具中,该工具不时用于将新类预生成到目标应用程序中。该工具包含一个配置类,其属性参数化所有 T4 模板的输出。
最初配置类是一个静态类。但是,随着类生成器工具的增长,最好将其设为非静态,而是为每次使用创建一个新实例。问题是如何将此实例传递给 T4 模板的实例。自然的方式似乎是从一个公共基础继承它们,该基础将与配置类实例一起提供。
问题在于 TextTransformation 类,它本来可以由我的自定义 T4 基类继承,它位于一个程序集中,该程序集(根据 this SO question 等来源)不随 Visual Studio 2010 提供。而是它在 Visual Studio 2010 SDK 中提供。
VS2010 生成的基类虽然本身没有祖先,但不是局部的,因此无法通过另一个局部声明“注入”自定义祖先。
因此问题是:有没有一种方法可以从自定义基类继承运行时执行的 T4 模板而无需安装 Visual Studio 2010 SDK?
免责声明:我对 T4 不是很熟悉,所以我可能完全错误地解决了这个问题。因此,欢迎任何其他架构建议,尽管我的目标不是创建一个超级架构的生成器——它只是一个辅助工具,对于偶尔的读者来说应该是简单易懂的。
【问题讨论】:
标签: visual-studio-2010 inheritance t4