T4模板:T4模板之基础篇

一、回顾

上一篇文章 ——T4模板之菜菜鸟篇,我们囫囵吞枣的创建了与“T4模板”有关的文件。在创建各个文件的这一个过程中,我们对于T4模板有了那么丁点的认识。现在就带着之前的那些问题,正式的迈入对“T4模板”的学习。

二、概念

2.1、类型

T4 文本模板有两种类型:

  • 设计时 T4 文本模板
  • 运行时 T4 文本模板

三、简要教程

我们只讲“设计时T4文本模板”,其他的都TMD属于高级部分了,哥不懂给不给?

打开之前我们创建的“TextTemplate_.tt”文件:

很明显的有一个特征,那么就是他们都是这种模式:

<#@ 指令 属性=“值”#>

就这样定了,我们按行来学习

3.1、指令:

3.1.1、模板指令

<#@ template debug="false" hostspecific="false" language="C#"#>

说的是这个模板,不可以调试,不提供host这个属性,用的是C#语言。它的完整模式如下,中括号表示可选,没有写它将按照默认处理。

<#@ template [language="VB"] [compilerOptions="options"] [culture="code"] [debug="true"] [hostspecific="true"] [inherits="templateBaseClass"] [visibility="internal"] [linePragmas="false"] #>
3.1.2、程序集指令

<#@ assembly name="System.Core"#>   它的作用类似于在 Visual Studio 项目中添加程序集引用。

3.1.3、导入指令

<#@ import namespace="System.Linq"#>   它等效于 C# 中的 “using System.Linq;”。

3.1.4、输出指令

<#@ output extension=".txt" #>   它就是告诉你,T4模板最终将生产.txt对应后缀的文件。

3.2、控制块

不难发现,如上截图,我们生成的“TextTemplate_.txt”它里面确实是什么内容都没有的。因此,更进一步的学习是“控制块”,对于不同控制块的组合,便能生成我们所需要的文件。

  • <# 标准控制块 #> 可以包含语句。
  • <#= 表达式控制块 #> 可以包含表达式。
  • <#+ 类特征控制块 #> 可以包含方法、字段和属性,就像一个类的内部

3.3、心动不如行动

唱首歌吧!“我是一只小小小鸟……”:

我是zeje,我们来定义一个变量 string name =“zeje”,再看看效果:

哥已经压抑了很久了,一起来呐喊吧:

发泄够了吧?仔细想想,这个类<#+ 类特征控制块 #> 还没用上。好吧,zeje就在这里自我介绍下吧:

既然都自我介绍过了,是不是可以开溜了呢?还是给大家都个红包吧!(这里可能需要另外说明,先凑合着看吧!)

生成结果如下:

本文转载于:http://www.cnblogs.com/zeje/p/5248340.html

时间: 2024-10-09 00:49:25

T4模板:T4模板之基础篇的相关文章

T4模板之基础篇

一.回顾 上一篇文章 ——T4模板之菜菜鸟篇,我们囫囵吞枣的创建了与“T4模板”有关的文件.在创建各个文件的这一个过程中,我们对于T4模板有了那么丁点的认识.现在就带着之前的那些问题,正式的迈入对“T4模板”的学习. 二.概念 2.1.类型 T4 文本模板有两种类型: 设计时 T4 文本模板 运行时 T4 文本模板 三.简要教程 我们只讲“设计时T4文本模板”,其他的都TMD属于高级部分了,哥不懂给不给? 打开之前我们创建的“TextTemplate_.tt”文件: 很明显的有一个特征,那么就是

(二)SpringBoot基础篇- 静态资源的访问及Thymeleaf模板引擎的使用

一.描述 在应用系统开发的过程中,不可避免的需要使用静态资源(浏览器看的懂,他可以有变量,例:HTML页面,css样式文件,文本,属性文件,图片等): 并且SpringBoot内置了Thymeleaf模板引擎,可以使用模板引擎进行渲染处理,默认版本为2.1,可以重新定义Thymeleaf的版本号,在maven的配置文件中配置如下内容: <properties> <thymeleaf.version>3.0.2.RELEASE</thymeleaf.version> &l

C++提高1 【泛型编程】函数模板 类模板

[本文谢绝转载] [泛型编程] 函数模板 为什么会有函数模板 现象: 函数的业务逻辑一样 函数的参数类型不一样 [最常用]函数模板  显式的调用 [不常用]类型推导 多个参数,参数定义了必须要用 函数模板,实现int类型数组,char字符串排序: 函数模板 与 普通函数的本质区别 函数模板 和 普通函数在一起 的调用型研究: C++是如何支持函数模板机制的? 函数模板机制结论 类模板 类模板的定义 类模板做函数的参数 类模板的派生成普通类 模板类的派生成模板类 复数类,所有函数都写在类的内部,运

Vue.js基础篇实战--一个ToDoList小应用

距离开始学Vue已经过去一个多月了,总想把学到的东西柔和在一起,做点东西出来,于是有了这个Todolist小应用. 主要功能就是把一天要做的事情记录下来,还实现了: 标记完成事件 删除已完成事件 各种排序 仅显示未完成的项目 本地保存 截图看这里 用时一周,14次commits,把心中的构想基本实现了.详情请看:这里 整个过程下来,收获还是很多的, 1.对mvvm有了进一步的理解, 2.对css布局有了更多的了解. 3.更进一步理解了Vue的事件和组件机制.这些机制将应用解耦,每一部分都隔离出来

Python之路【第十六篇】:Django【基础篇】

Python之路[第十六篇]:Django[基础篇] Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. 基本配置 一.创建django程序 终端命令:django-admin startproject sitename IDE创建Django程序时,本质上都是自动执行上述命令 其他常用命令: python manage.py runserver

PHP实现微信公众平台开发—基础篇

PHP实现微信公众平台开发-基础篇 2 1课程介绍 2 2. 微信公众号账号介绍的申请流程详解 2 2.1微信三角色关系 2 2.2信息流的过程 2 2.4微信公众账号的认证 3 2.5订阅号的申请流程 3 3. 微信公众号的工作原理 3 3.1数据交互流程 3 3.2编辑模式和开发者模式的介绍 4 3.3编辑模式的简单演示 5 3.4接口介绍 5 4. 接入微信公众账号的API 5 1.验证配置介绍   5 2.验证参数介绍 5 3.填写验证配置 6 4.生成公网访问的脚本文件 6 5.验证代

iOS系列 基础篇 08 文本与键盘

iOS系列 基础篇 08 文本与键盘 目录: 1. 扯扯犊子 2. TextField 3. TextView 4. 键盘的打开和关闭 5. 打开/关闭键盘的通知 6. 键盘的种类 7. 最后再扯两句 1. 扯扯犊子 与Label一样,TextField和TextView也是文本类控件,是可以编辑文本内容的. 在控件内容编辑方面,三者都可以通过代码.双击该控件和属性检查器中的Text属性来实现,但是TextField和TextView比Label多了一个键盘的使用. 另外,TextField和T

[转载]前端工程——基础篇

特别声明:本文转载@云龙的<前端工程——基础篇>,感谢@云龙的分享. 喂喂喂,那个切图的,把页面写好就发给研发工程师套模板吧. 你好,切图仔. 不知道你的团队如何定义前端开发,据我所知,时至今日仍然有很多团队会把前端开发归类为产品或者设计岗位,虽然身份之争多少有些无谓,但我对这种偏见还是心存芥蒂,酝酿了许久,决定写一个系列的文章,试着从工程的角度系统的介绍一下我对前端,尤其是Web前端的理解. 只要我们还把自己的工作看作为一项软件开发活动,那么我相信读过下面的内容你也一定会有所共鸣. 前端,是

【ShaderToy】基础篇之谈谈点、线的绘制

写在前面 写前面一篇的时候,发现还是不够基础.因此打算增加几篇基础篇,从点线面开始,希望可以更好理解. 其实用Pixel Shader的过程很像在纸上绘画的过程.屏幕上的每一个像素对应了纸上的一个方格,如果你愿意,你甚至可以一个个判断像素的位置,从而画出任何你想画的图像,也的确有爱好者这么做过.但往往,我们需要的是一个动态的效果,这个效果往往依赖于数学公式的约束.我们可以说是,用数学去绘画.我们用数学去约束,哪些点应该用什么颜色去绘制. 这篇,我们从基本的点和线开始,看一下如何在Pixel Sh

2000条你应知的WPF小姿势 基础篇&lt;1-7&gt;

在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师,对C#和WPF有着极深的热情.最为出色的是他维护了两个博客:2,000Things You Should Know About C# 和 2,000 Things You Should Know About WPF .听到博客名字就懂这个人有多伟大了吧.他以类似微博式的150字简短语言来每天更新一条WPF和C#重要又容易被遗忘的知识.Follow他的博客也有一段日子了,很希望能够分享给大家. 本系列我不仅会翻译