标签:
在此次做教务系统时,用到了许多T4模板来生成代码。那么T4模板到底是干什么的,为什么要使用T4模板呢?这里简单的了解一下它的作用。
在创建一个T4模板时,默认会出现以下代码段:
<#@ 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=".txt" #>上面这些代码即是T4模板中的指令块,即
模板指令:即指明这里用的是C#的代码模板,程序集指令,导入指令,输出指令,以及还有参数指令和包含指令。在运用过程中没有接触到这么多细节的东西,只是简单的了解了一下,这里拿系统中的一个小例子来说明:
<#@ template language="C#" debug="false" hostspecific="true"#> <#@ include file="EF.Utility.CS.ttinclude"#><#@ output extension=".cs"#> //这里输出为.CS文件 <# CodeGenerationTools code = new CodeGenerationTools(this); MetadataLoader loader = new MetadataLoader(this); CodeRegion region = new CodeRegion(this, 1);//区域代码 MetadataTools ef = new MetadataTools(this); string inputFile = @"..\\ITOO.Basic.Model\\BasicEntity.edmx"; //这里 EdmItemCollection ItemCollection = loader.CreateEdmItemCollection(inputFile);//创建EdmItemCollection并加载元数据 string namespaceName = code.VsNamespaceSuggestion(); EntityFrameworkTemplateFileManager fileManager = EntityFrameworkTemplateFileManager.Create(this); #> using ITOO.Basic.Model; //这些是文本块 using ITOO.Library.Core; namespace ITOO.Basic.IBLL { <# foreach (EntityType entity in ItemCollection.GetItems<EntityType>().OrderBy(e => e.Name)) //这些是控制块 { #> public partial interface I<#=entity.Name#>BLL :IBaseService<<#=entity.Name#>> { } <#}#> }
文本块:直接复制到输出的内容。
控制块:向文本插入可变值并控制文本的条件或重复部件的程序代码,不能在控制块中嵌套控制块。这里包括可变化的参数,如<#=entity.Name#>用<#...#>来表示。
以上是一些对T4模板的简单认识,从功能上看,主要是为了减少代码重复。从而使开发人员减少重复的工作。更多详情请见:http://www.cnblogs.com/heyuquan/archive/2012/07/26/2610959.html标签:
原文地址:http://blog.csdn.net/wangyy130/article/details/42298589