CodeSmith教程(8) CodeTemplate对象

在使用代码模板产生代码时,CodeSmith引擎背后使用了不少对象来帮助代码的生成,其中常用的有

CodeTempate (类似于Asp.Net的Page类) Progress 用于显示代码生成的进度 CodeTemplateInfo 可以返回关于当前模板自身 的一些信息。

本篇介绍CodeTemplate ,CodeTemplate代表了由CodeSmith引擎处理的代码模板对象,可以通过CodeTemplate对象直接和 CodeSmith引擎交互,比如:

使用 GetFileName 修改模板生成的缺省文件名 使用 Render method 把模板的输出到多个文件中 通过  events 把代码插入到CodeSmith引擎处理模板的过程中。 通过 Response 属性直接在输出文件中写内容 。

使用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,否则你就不会输出到缺省的文件。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索模板
, 方法
, 代码
, 属性
, filewriter
, 输出
, CodeSmith
模板输出
idea code template、java code template、eclipse codetemplate、codetemplate.xml下载、华为 code template,以便于您获取更多的相关知识。

时间: 2024-08-17 16:26:50

CodeSmith教程(8) CodeTemplate对象的相关文章

asp入门教程:ASP Session 对象简介

asp入门教程:ASP Session 对象简介 Session对象是用来储存的信息,或更改设置的一个用户会议.变量存储在Session对象举办资讯单一用户,并提供给所有的网页在一个应用程序. -------------------------------------------------- ------------------------------ Session对象 当你正与一个应用程序,你打开它,做一些改变,然后将其关闭.这是很像会议.计算机知道你是谁.它知道当您启动应用程序,当您结束

Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解_php实例

本文实例讲述了Zend Framework教程之请求对象的封装Zend_Controller_Request方法.分享给大家供大家参考,具体如下: 概述 请求对象是在前端控制器,路由器,分发器,以及控制类间传递的简单值对象.请求对象封装了请求的模块,控制器,动作以及可选的参数,还包括其他的请求环境,如HTTP,CLI,PHP-GTK. 请求对象的基本实现 ├── Request │   ├── Abstract.php │   ├── Apache404.php │   ├── Exceptio

asp入门教程:ASP FileSystemObject 对象

asp入门教程:ASP FileSystemObject 对象 使用FileSystemObject对象是用来存取档案系统的服务器上. 下面我们来举例说明吧. <html> <body> <% Set fs=Server.CreateObject("Scripting.FileSystemObject") If (fs.FileExists("c:winntcursors3dgarro.cur"))=true Then       Re

Zend Framework教程之响应对象的封装Zend_Controller_Response实例详解_php实例

本文实例讲述了Zend Framework教程之响应对象的封装Zend_Controller_Response用法.分享给大家供大家参考,具体如下: 概述 响应对象逻辑上是请求对象的搭档.目的在于收集消息体和/或消息头,因而可能返回大批的结果. Zend_Controller_Response响应对象的基本实现 ├── Response │   ├── Abstract.php │   ├── Cli.php │   ├── Exception.php │   ├── Http.php │  

JS教程:JavaScript Date 对象使用方法

JS教程:JavaScript Date 对象使用方法 先来看个例子吧,返回当前日期与时间. <html> <body> <script type="text/javascript"> document.write(Date()); </script> </body> </html> 实例二.gettime() <html> <body> <script type="text

asp教程:ASP Session 对象简单简介

asp教程:ASP Session 对象简单简介 Session对象是用来储存的信息,或更改设置的一个用户会议.变量存储在Session对象举办资讯单一用户,并提供给所有的网页在一个应用程序. 下面来看一个简单的实例吧.  <html> <body> <%  response.write("<p>") response.write("The default LCID for this page is: " & Ses

asp入门教程:ASP Server 对象简单

asp入门教程:ASP Server 对象简单 在ASP服务器对象用于访问属性和方法在服务器上. 好了下面我们来看一个实例: <html> <body> <% Set fs = Server.CreateObject("Scripting.FileSystemObject") Set rs = fs.GetFile(Server.MapPath("demo_lastmodified.asp")) modified = rs.DateLa

asp入门教程:ASP Response 对象教程

asp入门教程:ASP Response 对象教程 ASP Response对象是用来发送输出到用户从服务器. 下面我们来看一个简单的例子吧. <% response.write " i love asp " %> 输出的结果为 i love asp response的作用是输出数据.的. 转载请注明来自http://www.111cn.net/asp/asp.html

CodeSmith教程(4) 基本语法-CodeTemplate 指令

前面的几篇介绍了使用CodeSmith模板自动生成代码和编写代码模板的基本知识.也说过CodeSmith最核心的部分是代码模板 ,从本篇开始介绍CodeSmith代码模板的基本语法,对于Asp.Net程序员来说,可以说是碰到老朋友了:-) ,CodeSmith 的代码模 板和Asp.Net Page 几乎如出一辙. 本篇介绍CodeTemplate指令,这个是模板中唯一必须的声明,包含一些模板特殊的属 性,包含模板使用的语言.生成的语言和一些对于模板的描述.比如: <%@ CodeTemplat