T4语法的介绍(visual studio支持的自动化代码生成语言)

所需积分/C币:23 2017-11-21 11:29:43 735KB PDF
0
收藏 收藏
举报

T4语法的介绍(visual studio支持的自动化代码生成语言)
5. <# template # 13IV: <# template [language="VB"] Thostspecific="true] [debug="true Inherits="template Base Class"] [culture="code"] [compilerOptions="options"#> 它主要有2个意思:一个只的是写模板所使用的语言,比如<#@ template language="C#"#>那么我这个模板可以用C#来些。 另一个很重要的特性指的是:继承。就是把一些公共的方法抽象到父模板中,然后可以在 多个模板中进行复用。这个非常有用,我以后会逐步的介绍。比如:<#@ template language=C# inherits="CommonTemplate"debug=true#> CommonTemplate efI 写的一个公共模板。 6. <# include file=#> 这个很有意思,意思就是说在当前的模板中包含另外一个文件中的内容。先来一个很简单 的例子。 6.1新建一个空白的文本模板,命名为: MyTextTemplate.tt 62在新建一个tt文件,里写入一些字。 my l ext. txt 63在 MyTextTemplate. t模板中,<t@ include file=" my Text. txt“#> 64然后你就可以在 My TextTemplate看到你文本中的一些字符 对第六点需要的注意事项 .fle的路径可以是绝对路径、相对路径。 2.fle可以包括环境变量,但它必须用%包起来。比如<#@ include file="%HOMEPATH%\MylncludeFile t4#> 3fe后面的文件的扩展名不能包括t结尾的。 果你需要用t的结尾,你需要用4t来代替。这是因为如果你加了tt后缀的文件名,因 为VS会自动是把当前t的文件的 Custom tool(定义工具)属性设定为 TextTemplating ileGeneratoro 2、文本块( Text block) 文本块就是直接原样输岀的静态文本,不需要添加任何的标签。在上面的模板文件中,处 理定义在<#.#>、<#+….#>和<#=….#>中的文本都属于文本块。比如在捐令块结束到 第一个“<#标签之间的内容就是一段静态的文本块。 模板内容 # template language="C#"#> Hello world 编译的内容 using System; using Microsoft VisualStudio. Text Templating; namespace Microsoft VisualStudio. Text Templating 413AE4BE2CE28AB99 public class Generated TextTransformation: TextTransformation public override string Transform Texto this Write("Hello World!"); return this Generation Environment. ToString(; 输出是: Hello world! 3、代码语句块( Statement block) 代码语句块通过<#Sτ atement#>的形式表示,中间是一段通过相应编程语言编写的程序调 用,我们可以通过代码语句快控制文本转化的流程。 其实在我们的使用中,对语句块的作用主娑就是写C井代码。 比如,请看下面 for(int i =0; i< 4; i++) Write i+,") Write 4) #> hello! 那么输出的结果就是 0,1,234 凡是能在平时我们∨S里面书写的代码,都可以在<##>里表示。 4、表达式块( Expression Block) 表达式块以<#= Expression#>的形式表示,通过它之际上动态的解析的字符串表达内嵌到 输出的文本中 模板内容 <# template language="C#"#> fr(nti=1;i<=3;i++) #> Hello world <#= i #>l < #> 请注意这个:<#=i#> 后台编译的内容: using syster using Microsoft VisualStudio. TextTemplating namespace Microsoft VisualStudio. Text Templating 76E036EA7C70CB236 public class Generated TextTransformation: TextTransformation public override string transformTexto for(int i=1; i<- 3; i++) this Write("Hello world") this Write(TostringHelper. ToString With Cculture(i); this Write !rn") return this Generation Environment To: 输出的内容就是: Hello World 1 Hello world 21 Hello world 3 5、类特性块( Class Feature block) 首先我们需要记住的是类型性模块是有个+号的,比如<#+#>这种类型的。 如果文本转化需要一些比较复杂的逻辑,我们需要写在一个单独的辅助方法中,甚至是定 义一些单独的类,我们就是将它们定义在类特性块中。 类特性块的表现形式为<#+ Feature(ode#>,对于 Hello world模板,得到人名列表的 nitializePersonlist方法就定义在类特性块中。 其实说白了就是在里面写方法,方使我们多次重用和调用,提高我们的开发效率。 # template language="C#"#> <# Helloworld();#>//方法调用 <# Helloworld();#>//方法调用 <#+ private void HelloWorld()/方法定义 this Write hello world") # 注意上面的+号的上面有个<# Helloworld0;#>。 所以,结果理所当然的就是有2个 Hello world。 不过,您需要注意的是,你的这个类特性方法应该放到最后面去,比如你这样用 <# template language=C#"#> < HelloWorld(; # < HelloWorldo; # <#十 private void Helloworldo thisWrite Hello World"); # <H HelloWorld(; # 不好意忠,它会给你报错 Error Generating output 因为你不是放到最后面了,所以这里需要特别特別特别注意一下。 注意如粜使用 include包含类定义,就不存在将类定义代码放在最后面的困扰。 还有就是类特性的功能里面并不仅仅只是一个方法,它里面还可以放很多东西,比如属 性、常量、字段以及其他可以在其他编程里看到的C#结构都可以插入里面,我们足足可 以见到它有多么强悍的生命力 比如下面在举一个例子 <# template language=C#"#> < Helloworld(; # <#+ private string field ="classy"; private void HelloWorl d() forint i=1; i<=3; i++) # Hello <# field#> World <#=i#>l # 输出的结果就是 Hello classy World 1 Hello classy world 2 Hello classy world 3 OK。T4语言的就简单的到这里。写的比较仓促,希望能得到谅解。有问颕可以在讨论。 谢谢。

...展开详情
试读 9P T4语法的介绍(visual studio支持的自动化代码生成语言)
立即下载 低至0.43元/次 身份认证VIP会员低至7折
抢沙发
一个资源只可评论一次,评论内容不能少于5个字
上传资源赚积分or赚钱
    最新推荐
    T4语法的介绍(visual studio支持的自动化代码生成语言) 23积分/C币 立即下载
    1/9
    T4语法的介绍(visual studio支持的自动化代码生成语言)第1页
    T4语法的介绍(visual studio支持的自动化代码生成语言)第2页

    试读结束, 可继续读1页

    23积分/C币 立即下载 >