.NET程序员不能错过的强大的T4模板

发表于:2011-9-29 09:47

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:龙之韵(cnblogs)    来源:51Testing软件测试网采编

  功能强大的T4文本模版

  希望您至少能意识到即使有代码自动生成器,但数据库结构变更等因素也会给我们带来不少的麻烦。这种直接放到项目里.tt文件的好处自然不用多说了。有特别的业务需求,在.用partial类来实现,免得模板文件自动更新代码时将手写的代码覆盖掉。

  T4文本模版到底有什么用?什么时候用?

  看一下下面这个示例你应该就会明白了:

  新建一个控制台应用程序,删除里面的所有文件,新建一个Program.tt的文件,并输入如下内容:

  • <#@ template language="C#"debug="true"#> 
  • <#@ output extension=".cs"encoding="utf-8"#> 
  • <#  
  • stringClassName = "Program";  
  • #>stringClassName = "Program";  
  • #> 
  • namespaceHelloAngel  
  • {  
  • usingSystem;  
  • class<#=ClassName #> 
  • {  
  • staticvoidMain(string[] args)  
  •  {  
  • Console.WriteLine("Hello Angel");  
  • }  
  • }  
  • }
  •   保存后我们会看到解决方案资源管理器中是这个样式的:

      此时的Program.cs文件正是我们的Program.tt文件生成的,其内容如下:

  • namespaceHelloAngel  
  • {  
  • usingSystem;  
  • classProgram  
  • {  
  • staticvoidMain(string[] args)  
  • {  
  • Console.WriteLine("Hello Angel");  
  • }  
  • }  
  • }
  •   看看下面两个指令:

  • <#@ template language="C#"debug="true"#> 
  • <#@ output extension=".cs"encoding="utf-8"#>
  •   <#@ template #>指令中language指定了我们模板运行使用的语言,可以是VB,或C#,debug声明了是否使用调试,如果用不到调试,可以设置为false。

      <#@ output #>指令中extension指定了输出文件的扩展名,encoding指定输出文件的编码方案。

      也就是说,我们可以使用C#语言来写此模板文件中的逻辑,模板将会输出一个与模板文件名相同,扩展名为.cs编码为utf-8的文件。

      这里稍作了解下,接下来看看指令的语法吧:

      指令的语法如下所示:

    <#@ DirectiveName [AttributeName = "AttributeValue"] ... #>

      必须将所有特性值放在双引号内。如果值本身包含引号,则必须使用 字符对这些引号进行转义。

      指令通常是模板文件或包含的文件中的第一个元素。不应将它们放置在代码块 <#...#> 内,也不应放置在类功能块 <#+...#> 之后。

      T4 模板指令
      <#@ template [language="VB"] [hostspecific="true"] [debug="true"] [inherits="templateBaseClass"] [culture="code"] [compilerOptions="options"] #>

      T4 参数指令
      <#@ parameter type="Full.TypeName"name="ParameterName"#>

      T4 输出指令
      <#@ output extension=".fileNameExtension"[encoding="encoding"] #>

    21/212>
    《2023软件测试行业现状调查报告》独家发布~

    关注51Testing

    联系我们

    快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

    法律顾问:上海兰迪律师事务所 项棋律师
    版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
    投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

    沪ICP备05003035号

    沪公网安备 31010102002173号