t4模板优于Class文件

时间:2013-05-09 05:31:02

标签: c# asp.net class t4

t4模板比asp.net中的Class文件有什么优势?

就像我们使用t4模板生成强类型类一样。我们可以使用asp.net中的c#类文件来做同样的事情。那么,t4模板比普通类文件有什么优势呢?

任何人都请指出可以在课程文件上实现的场景。

此致 Sujith

3 个答案:

答案 0 :(得分:0)

我首先从MSDN教程中引用这句话:

  

T4文本模板是可以生成文本文件的文本块和控制逻辑的混合体。控制逻辑在Visual C#或Visual Basic中编写为程序代码的片段。生成的文件可以是任何类型的文本,例如网页,资源文件或任何语言的程序源代码。

T4模板用于生成动态文本,甚至可以是一个类。实体框架或DataSet Designer是设计时代码生成的好例子,它允许用户以图形方式将实体从数据库拖放到Designer,然后生成所有类以反映数据库表。

自定义工具在C#类中转换生成的设计时XML。这背后的机制类似于T4模板所做的。

希望此概述可以让您更好地了解T4模板如何提供帮助。

答案 1 :(得分:0)

您可以编写编写其他代码的代码。有些东西你无法重构到一个位置,或者通过T4(或任何代码生成)更容易集中的东西。

可能存在一个代码,其中一个中央驱动程序可能需要多个文件或单个文件中的大量代码才能根据它进行更改。

另一种充分利用它的方法......我使用T4模板编写了一个小C#对象,生成.sql文件,.xsl,{{1 }和.js文件。全部来自基于一组规则的单个C#对象。所以我从一个c#模板生成几个有用的文件。我可以让它生成创建一个表来保存该类型所需的.sql。 .xsl或.xml用于定义与项目相关的配置值,.js文件用于将强类型模型带入javascript,最后用.c表示c#中的实际模型。

答案 2 :(得分:0)

简单地说,T4模板可以基于某些输入数据(如实体框架模型)为您(和其他文件)生成类。在必须为具有相同功能的许多类(如大型Entity Framework模型的所有实体的类)创建的情况下,这非常方便。然后,如果输入被更改,T4模板就会完成作业并自动更新创建的类(您可以在输入文件上运行“自定义工具”以执行T4模板)。

T4模板可以(当然)创建部分类,以允许您添加成员(到您创建的类的其他部分)。这样,您可以添加模板重新创建类时未覆盖的功能。

基于EF模型生成POCO类(.NET 4.5中的EF默认值)的T4模板是良好使用T4模板的完美示例。另一个例子是T4模板,它为EF模型的所有实体类创建视图模型基类(对于MVVM)。