gpt4 book ai didi

visual-studio-2010 - 从自定义基类继承 T4 模板,提供未安装 Visual Studio 2010 SDK

转载 作者:行者123 更新时间:2023-12-04 17:58:03 26 4
gpt4 key购买 nike

我有一个 T4 模板系统——在运行时执行,而不是在编译时执行——它在我的应用程序中生成许多类的骨架。所有这些模板都驻留在生成器工具中,该工具不时用于将新类预生成到目标应用程序中。该工具包含一个配置类,其属性参数化所有 T4 模板的输出。

最初配置类是一个静态类。但是,随着类生成器工具的增长,最好将其设为非静态,而是为每次使用创建一个新实例。问题是如何将此实例传递给 T4 模板的实例。自然的方式似乎是从一个公共(public)基础继承它们,该基础将与配置类实例一起提供。

问题是 TextTransformation由我的自定义 T4 基类继承的类位于 Visual Studio 2010 未附带的程序集中(根据 this SO question 等来源)。相反,它在 Visual Studio 2010 SDK 中提供。

VS2010 生成的基类虽然本身没有祖先,但不是局部的,因此无法通过另一个局部声明“注入(inject)”自定义祖先。

因此问题是:有没有办法从自定义基类继承运行时执行的 T4 模板而无需安装 Visual Studio 2010 SDK?

免责声明:我对 T4 不是很熟悉,所以我可能完全错误地解决了这个问题。因此,欢迎任何其他架构建议,尽管我的目标不是创建一个 super 架构的生成器——它只是一个辅助工具,对于偶尔的读者来说应该是简单易懂的。

最佳答案

解决方案其实很简单——基类可以实现为 T4 模板本身并被继承。像这样:

基本模板:

<#@ template language="C#" #>
<#+

public Config Config { get; set; }

#>

继承模板:
<#@ template language="C#" inherits="BaseTemplate" #>
...
<#= Config.SomeProperty #>
...

一旦模板被实例化,在基本模板中声明的属性就会被提供给实际配置。

关于visual-studio-2010 - 从自定义基类继承 T4 模板,提供未安装 Visual Studio 2010 SDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4695428/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com