在使用代码模板产生代码时,CodeSmith引擎背后使用了不少对象来帮助代码的生成,其中常用的有
- CodeTempate (类似于Asp.Net的Page类)
- Progress 用于显示代码生成的进度
- CodeTemplateInfo 可以返回关于当前模板自身的一些信息。
本篇介绍CodeTemplate ,CodeTemplate代表了由CodeSmith引擎处理的代码模板对象,可以通过CodeTemplate对象直接和CodeSmith引擎交互,比如:
使用GetFileName修改模板输出的文件名
在前面的例子CodeSmith 使用教程(2): 编写第一个代码模板我们已经使用GetFileName修改过输出的文件名,比如在你的模板中定义了一个ClassName属性,可以通过GetFileName把模板输出的缺省文件名改成类名
<%@ Template Language="C#" TargetLanguage="Text" %>
<%@ Property Name="ClassName" Type="System.String" Default="ClassName" %>
This template shows off how to override the GetFileName method.
<script runat="template">
public override string GetFileName()
{
return ClassName + ".cs";
}
</script>
重载ParseDefaultValue方法
在定义属性的缺省值时,有时有些属性的缺省值可能无法从String转换,此时可以通过重载ParseDefaultValue方法,这个方法会被CodeSmith引擎中处理每个属性时调用,如果你重载了这个方法,可以按照你自己的逻辑来处理属性的缺省值。
重载Render方法
CodeTemplate的Render方法是CodeSmith引擎生成最终输出时调用的,可以通过重载这个方法来修改输出的内容或是把输出写到多个文件中。
比如下面代码除了生成缺省的输出外,还把输出写到另外两个文件中:
<%@ CodeTemplate Language="C#" TargetLanguage="Text"
Description="AddTextWriter Demonstration." %>
<%@ Import Namespace="System.IO" %>
//This template demonstrates using the AddTextWriter method
//to output the template results to multiple locations concurrently.
<script runat="template">
public override void Render(TextWriter writer)
{
StreamWriter fileWriter1 = new StreamWriter(@"test1.txt", true);
this.Response.AddTextWriter(fileWriter1);
StreamWriter fileWriter2 = new StreamWriter(@"test2.txt", true);
this.Response.AddTextWriter(fileWriter2);
base.Render(writer);
fileWriter1.Close();
fileWriter2.Close();
}
</script>
注意调用基类的base.Render,否则你就不会输出到缺省的文件。本例下载
模板事件
CodeTemplate类定义了下面几个事件,你可以中这些事件发生时添加自动的事件处理.
使用Response对象
和Asp.Net的Page对象一样,可以通过CodeTemplate的Response属性直接在输出流中写入内容。比如
<%@ CodeTemplate Language="C#" TargetLanguage="Text"
Description="This template demonstrates writing directly to the Response property" %>
<% RenderDirect(); %>
<script runat="template">
public void RenderDirect()
{
Response.WriteLine("Written directly to the Response property.");
Response.WriteLine("Hello " + System.Environment.UserName + "!");
}
</script>
直接在输出流中写入两行文字。Response对象的类型为CodeTemplateWriter类 ,常用的方法有:
- AddTextWriter -添加额外的输出位置
- Indent – 为输出添加一个缩进
- Unindent -为输出减少一个缩进
- Write -写入内容
- WriteLine -写入内容并添加分行符
分享到:
相关推荐
CodeSmith教程[全].pdf CodeSmith教程[全].pdf CodeSmith教程[全].pdf CodeSmith教程[全].pdf CodeSmith教程[全].pdf CodeSmith教程[全].pdf CodeSmith教程[全].pdf CodeSmith教程[全].pdf CodeSmith教程[全].pdf ...
CodeSmith Template CodeSmith Template CodeSmith Template CodeSmith Template
CodeSmith使用教程,开发资料,PDF高清淅版,对CodeSmith熟悉的朋友都知道,CodeSmith是一个基于模板的代码生成工具,它使用类似于ASP.NET的语法来生成代码或文本,本教程将带你掌握CodeSmith的使用方法和原理等...
CodeSmith开发使用教程资料 pdfCodeSmith开发使用教程资料 pdfCodeSmith开发使用教程资料 pdfCodeSmith开发使用教程资料 pdf
内部包含两个学习文件:CodeSmith.docx和CodeSmith使用手册及实例.pdf
CodeSmith安装包已经模板代码和使用教程,原版程序+注册机+教程(包含图文教程),视频教程,三层模板的通用代码生成模板
前言11第 1 章第 1 章概述概述44第 2 章第 2 章编写第一个代码模板编写第一个代码模板11第 3 章第 3 章自动生成Yii Framework Ac
CodeSmith使用基础教程 非常详细的网页教程
codesmith编程完整教程 所用工具: CodeSmith Professional v5.1.3.8510,代码示例全部是以C#为例。
CodeSmith 基础教程 word版,比较简单
codesmith使用教程。快速开发会用得到。
CodeSmith 使用手册及实例,初学者学习的很好资料
CodeSmith 基础教程.CodeSmith 基础教程.CodeSmith 基础教程.CodeSmith 基础教程.CodeSmith 基础教程
本软件可以让你从大量的代码中解脱~ CodeSmith初学者教程
CodeSmith教程,.net代码生成器简单教程
CodeSmith 是一种基于模板的代码生成工具,它使用类似于 ASP.NET 的语法来生成任意类型的代码或文本。与其他许多代码生成工具不同,CodeSmith 不要求您订阅特定的应用程序设计或体系结构。使用 CodeSmith,可以生成...
CodeSmith3.0中文教程。网上大部分教程是英文版的,这里提供的是简体中文版的教程。
codesmith nettiers-2.3.1.zip codesmith 模板codesmith nettiers-2.3.1.zip codesmith 模板codesmith nettiers-2.3.1.zip codesmith 模板codesmith nettiers-2.3.1.zip codesmith 模板codesmith nettiers-2.3.1.zip...
CodeSmith教程 中文版,帮助快速入门CodeSmith代码生成工具。
CodeSmith教程