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

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

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

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

分享:

  T4 程序集指令
  <#@ assembly name="[assembly strong name|assembly file name]"#>

  T4 导入指令
  <#@ import namespace="namespace"#>

  T4 包含指令
  <#@ include file="filePath"#>

  看了上面的指令后,就试着写个模板文件生成一些类来练习一下吧:

  • <#@ template language="C#"debug="true"#> 
  • <#@ output extension=".cs"encoding="utf-8"#> 
  • <#@ import namespace="System.Collections.Generic"#> 
  • <#  
  • List<List<string>classNames =  
  • new List<string>()  
  • {  
  • "Hello",  
  • "Test"  
  • };  
  • List<string>callMethods = new List<string>();  
  •  #> 
  • namespace HelloAngel  
  •  {  
  • using System;  
  • <#  
  • foreach (string className in classNames)  
  • {  
  • callMethods.Add(string.Format("{0}.Show();", className));  
  • #>foreach (string className in classNames)  
  • {  
  • callMethods.Add(string.Format("{0}.Show();", className));  
  • #> 
  • class <#=className #> 
  • {  
  • /// <summary> 
  • /// <#=className #>的注释  
  • /// </summary> 
  • public static void Show()  
  • {  
  • Console.WriteLine("ClassName:<#=className #>");  
  • }  
  • }  
  • <#  
  • #>}  
  • #> 
  • class Program  
  • {  
  • /// <summary> 
  • /// 入口方法的注释  
  • /// </summary> 
  • static void Main(string[] args)  
  • {  
  • <#  
  • foreach (string callMethod in callMethods)  
  • {  
  • #>foreach (string callMethod in callMethods)  
  • {  
  • #> 
  • // <#=callMethod #>调用  
  • <#=callMethod #> 
  •  <#  
  • }  
  • #>}  
  • #> 
  • }  
  • }  
  • }
  •   我们一般的项目多是分了简单三层,有了上面的一些经验,你应该会想。要是只写三个类.tt文件,就能自动给我们把整个三层维护好那多令人兴奋啊!确实,我就是这样做了一个项目给大家分享一下:

      看看现在整个项目成什么样子了:

      这里不止三个项目了。我加了个UnitTest的项目,一个Adapters的项目,看项目名称不难看出来,UnitTest项目就是一个测试项目。而Adapters项目呢,是实体适配器项目。先不管它们了。

      就这么点东西,已经完成三层的架设了,只是还是Paramter方式的。没有对存储过程的支持。十一如果没有人陪我过的话,我会将对存储过程的支持添加上去。

      建项目的时候建的是.net 4的,这里我把它改为.net2.0的了。不过本人只装有visual stuido 2010,如果您使用的是Visual studio 2008请您自行将项目文件中的版本号更正,此方法网上有许多。我就不多啰嗦了。

    22/2<12
    《2023软件测试行业现状调查报告》独家发布~

    关注51Testing

    联系我们

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

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

    沪ICP备05003035号

    沪公网安备 31010102002173号