如何使用从解决方案中现有基类继承的 T4 模板生成类?
Posted
技术标签:
【中文标题】如何使用从解决方案中现有基类继承的 T4 模板生成类?【英文标题】:How to produce a class using T4 template that inherits from an existing base class in the solution? 【发布时间】:2020-12-10 03:17:07 【问题描述】:我有一个抽象的枚举类,我想在 T4 模板中继承它。抽象类设置类结构。它还从数据库中提取值。
例如,这是我希望 T4 生成的:
public class Region : Enumeration
public static readonly Region Northeast = new Region(1, "Northeast", "1.jpg");
public static readonly Region Midwest = new Region(2, "Midwest", "2.jpg");
public static readonly Region South = new Region(3, "South", "3.jgp");
public static readonly Region West = new Region(4, "West","4.jpg");
public Region(int id, string name, string imageName)
: base(id, name, imageName)
这是我的第一个 T4 模板,所以我在这里做一些假设。如果我正确理解了这个过程,我必须在模板中创建代码来遍历值列表并输出文本,在本例中:“public static readonly Region Northeast = new Region(1, "Northeast", "1 .jpg");"列表中的每个值。
我的问题是,我是否应该将获取 db 值的代码放在 Features 函数中,调用该函数然后在 T4 模板的代码块中进行迭代?另外我假设要写出文本,需要写的文本放在代码块之前/之后?
提前致谢
【问题讨论】:
能否请您发布您目前编写 t4 模板的尝试? 【参考方案1】:阅读 T4 模板后,我能够回答自己的问题。 这是我的模板:
行:IList
使用以下方法从数据库中检索数据:
注意:我在这里使用的是 EF6,无法像通常那样创建上下文。必须使用嵌入在代码中的连接字符串来创建上下文,因为无法访问 Web 配置。然后我调用了数据库并返回了一个对象列表。
模板遍历对象并创建所需的代码行。我最终得到了我需要的东西:
【讨论】:
感谢您发布自己的解决方案。你摇滚。以上是关于如何使用从解决方案中现有基类继承的 T4 模板生成类?的主要内容,如果未能解决你的问题,请参考以下文章