上文带大家见识了下T4,这里呢开始介绍T4模板有关的内容。关于T4模板介绍和使用网上一搜一箩筐,想深入研究的可以自行去找些资料,这里只介绍接下来我们需要使用的一些知识,不会面面俱到的讲T4模板所有的知识。T4模板使用和ASPX文件使用方式近乎类似所以也不需要花太多时间。
打开TT文件,输入如下代码并保存:
@ assembly 指明TT模板环境使用的目标程序集
@ import 指明TT模板环境使用的命名空间
@ output 指明TT模板输出格式,包括文件后缀编码方式等
<##>中包含的代码即为控制块
未包含在<##>中的文本即文本块一般作为静态文本直接输出。
示例,创建一个1×5的表格并输出为Html格式:
<#@ template debug="false" hostspecific="false" language="C#" #> <#@ assembly name="System.Core" #> <#@ import namespace="System.Linq" #> <#@ import namespace="System.Text" #> <#@ import namespace="System.Collections.Generic" #> <#@ output extension=".html" #> <table> <tr> <# for(int i=0;i<5;i++) { #> <td></td> <# } #> </tr> </table>
只要将<#@ output extension=".html" #>改成.html即可。从这里可以看出基本和使用ASPX是一样的。除了个别指令需要查看下资料以外,基本会C#就能直接使用。
说了这么多,T4模板在我们项目开发中的作用貌似未体现出来。下面以一个实例来说明T4模板的具体应用。
相信绝大多数人对于写实体类是不厌其烦的,没人会傻到手动去写实体类,除非是必要的业务实体。如何根据数据库表自动生成对应实体,这是我们一个简单的需求。下面就是如何通过T4模板实现这个需求(当然VS本身有这个功能,我们只是把这种功能的实现进行还原):
新建类库项目EntityGenerator,创建一个实体模板文件EntityTemplate.tt,输入如下代码并保存:
<#@ template debug="false" hostspecific="false" language="C#" #> <#@ assembly name="System.Core" #> <#@ import namespace="System.Linq" #> <#@ import namespace="System.Text" #> <#@ import namespace="System.Collections.Generic" #> <#@ output extension=".cs" #> using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace EntityGenerator { public class TestEntity { /// <summary> /// 编号 /// </summary> public string Id { get; set; } } }
打开生成的EntityTemplate.cs文件可以看到如下内容:
没错一个完整的类文件已经生成出来,接下来就是怎样让类的属性通过连接数据库来动态生成。这个在下篇将详细演示。因为到目前为止还没有太多的代码量,到后期代码量上来了,我会连同项目一起上传的。