码迷,mamicode.com
首页 > 其他好文 > 详细

T4模板基础

时间:2014-12-31 20:09:43      阅读:288      评论:0      收藏:0      [点我收藏+]

标签:

在此次做教务系统时,用到了许多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

T4模板基础

标签:

原文地址:http://blog.csdn.net/wangyy130/article/details/42298589

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!