与asp.net中的类文件相比,t4模板的优势是什么?
就像我们使用t4模板生成强类型的类一样。我们可以使用asp.net中的c#类文件来做同样的事情。那么,与普通的类文件相比,t4模板有什么优势呢?
任何人请指出t4可以在类文件上实现的场景。
你好,Sujith
发布于 2013-05-09 18:49:44
我会从MSDN教程中的这句话开始:
T4文本模板是文本块和控制逻辑的混合体,可以生成文本文件。在Visual C#或Visual Basic中,控制逻辑被编写为程序代码片段。生成的文件可以是任何类型的文本,例如网页、资源文件或任何语言的程序源代码。
T4模板用于生成动态文本,甚至可以是一个类。实体框架或DataSet设计器是设计时代码生成的很好示例,它们允许用户以图形方式将实体从数据库拖放到设计器,然后生成所有类以反映数据库表。
在幕后,一个定制工具在C#类中转换生成的设计时XML。其背后的机制类似于T4模板的功能。
希望这篇概述能让你更好地理解T4模板是如何帮助你的。
发布于 2013-05-11 08:31:46
您可以编写编写其他代码的代码。有些东西不能重构到单个位置,或者更容易通过T4 (或任何代码生成)集中起来。
可能有一些代码,其中一个中央驱动程序可能需要多个文件或单个文件中的大量代码才能基于此进行更改。
另一种很好地利用它的方法...我使用T4模板编写了一个小C#对象,用于生成.sql文件、.xsl文件、.js文件和.cs文件。所有这些都来自基于一组规则的单个C#对象。因此,我从一个c#模板生成了几个有用的文件。我可以让它生成创建保存该类型的表所需的.sql。一个.xsl或.xml,用于定义与项目相关的配置值;一个.js文件,用于将强类型模型引入javascript;最后,.cs,用于c#中的实际模型。
发布于 2013-05-14 15:37:38
简单地说,T4模板可以基于某些输入数据(如实体框架模型)为您(和其他文件)生成类。在您必须创建许多具有相同功能的类(如大型实体框架模型的所有实体的类)的情况下,这非常方便。然后,如果输入发生变化,T4模板就会执行该工作并自动更新创建的类(您也可以在输入文件上运行“自定义工具”来执行T4模板)。
当然,T4模板可以创建分部类,以允许您添加成员(到您创建的类的其他部分)。这样,您就可以添加在模板重新创建类时不会被覆盖的功能。
基于EF模型生成POCO类(在.NET 4.5中默认为EF )的T4模板是一个很好地使用T4模板的例子。另一个例子是T4模板,它为EF模型的所有实体类创建视图模型基类(用于MVVM)。
https://stackoverflow.com/questions/16455020
复制相似问题