从外部文本模板生成代码 - 我应该编写常规C#工具还是使用文本模板工具?

时间:2011-05-28 21:08:51

标签: c# templates code-generation t4

到目前为止,我对T4只有一点经验,这就是我要问的原因。

我有这样的问题 - 而不是使用模板将自身转换为C#代码(我会使用T4)我有外部文件(模板),我想将其转换为C#代码。这里(只是一个例子!)我正在构建相当有限(非常有限)的ORM。所以我的模板看起来像这样:

Entry
*ID int
*Lang string
Text string

并且应该将其转换为完整的类,其开头如下:

public class Entry
{
  public int ID { get; set; }
  public string Lang { get; set; }
  public string Text { get; set; }

  public object[] PrimaryKeys { get { return new object[] { ID, Lang }; } }

  public void ReadRecord(...
}

问题 - 我的下一个最佳步骤是什么:我应该自己转换还是应该使用T4(或其他类似工具)。

我能想到的我自己的工具的一个优点是 IF 我有/花了足够的时间,我可以省略模板文件并直接创建C#依赖于数据库结构(在这个 case)而不是模板文件。

在回答时,如果您在两种情况下都推荐您的解决方案,请明确说明(输入:文本模板与二进制文件,如db)。

备注:拜托,请不要以“为什么不使用NHibernate / LS2 / EF ...”开头。谢谢!

1 个答案:

答案 0 :(得分:1)

我认为T4可以很好地满足您的需求。查看this MSDN link中的“设计时T4文字模板”部分。它描述了读取XML配置文件以驱动代码生成。您基本上将读取输入文件的代码放入.tt文件的第一部分,然后在您布置类时引用您读入的内容。