读书人

codeSmith高速用

发布时间: 2012-08-03 00:12:14 作者: rapoo

codeSmith快速用
CodeSmith 是一种语法类似于asp.net的基于模板的代码生成器,程序可以自定义模板,从而减少重复编码的劳动量,提高效率。
下面我们就来学习一下CodeSmith的使用吧。

首先我们来看一看一个简单的模板文件:

<%@ CodeTemplate Language="C#" TargetLanguage="C#"
Description="Generates a class including a special informational header" %>


<%@ Property Name="NameSpace" Type="String"
Category="Context"
Description="The namespace to use for this class" %>


<%@ Property Name="ClassName" Type="String"
Category="Context"
Description="The name of the class to generate" %>


<%@ Property Name="DevelopersName" Type="String"
Category="Context"
Description="The name to include in the comment header" %>


using System;
namespace <%=NameSpace %>
{
/// <summary>
/// Summary description for <%=ClassName %>.
/// </summary>
public class <%=ClassName %>
{
public <%=ClassName %>()
{
//
// TODO: Add constructor logic here
//
}
}
}
解析:

第一句:

这个是模板中唯一必须的声明,包含一些模板特殊的属性,包含模板使用的语言、生成的语言和一些对于模板的描述。

CodeTemplate代表代码的模板,Language是我们要指定模板的语言,TargetLanguage我们要指定的模板应用的目标语言,一般与language一致。

Description描述信息。

第二句:

<%@ Property Name="NameSpace" Type="String"

Category="Context"

Description="The namespace to use for this class" %>

Property:指定我们要声明的属性,Name指定当前属性的名称,Type指定当前属性的类型,Category:用来说明这个属性在CodeSmith Explorer的属性面板中显示成什么类型,例

如下拉选择、直接输入等,Description是指定当前属性的描述。

第三句:第三句是C#语言的定义了,在定义这些语句的时候只要我们在需要做成模板进行替换的地方写上<%=属性名 %>就行了。这样一个超级简单的模板就出来了。

运行模板文件的效果如图:

codeSmith高速用


在使用模板的时候,我们通常都能看到下拉列表的选择,那么我们应该怎么去编写带有下拉列表的模板呢?其实很简单,先定义一个枚举类型的变量,然后将属性的类型设置为枚举型的就可以了。下面我们来看一看例子:


注册的参数:
Name
:代表被引入的模版的名称。它可以被用作创建一个模版的实例。
Template:被引入模版文件的相对路径,它可以与当前的模版一起被动态的编译。
MergeProperties:设置成True时,所有被引用的面板的属性将被动态的添加到当前模版中。
ExcludePorperties:当使用MergeProperties时,你可能不需要某些属性被添加到当前模版中。将不需要的属性以逗号分隔放在这里,*号可以被用作通配符使用。


组件的声明(Assembly Directive)
用作在模版中引用一个外部部组件,或者包含一个编译好的源文件。
例:<%@ Assembly Name="SchemaExplorer" %>
或<%@ Assembly Src="MySourceFile.cs" %>
CodeSmith自动加载一些不同的组件:System, System.Diagnostics, System.ComponentModel, Microsoft.VisualBasic, CodeSmith.Engine

组件的参数:
Name
:需要引用组件的名称,组建必须存在于Global Assembly Cache,与CodeSmith在同一路径下或与模版文件在同一路径下。
Src:要包含文件的相对路径。

引入的声明(Import Directive)
在模版中引入一个命名空间,这个与VB.NET中的Imports和C#中的using相同。
例:<%@ Import Namespace="SchemaExplorer" %>
引入的参数:
NameSpace:被引入的命名空间的名字。记住同时必须要加载包含这个命名空间的相应组件,除非这个组件是被默认加载的。



1楼Wentasy昨天 19:41
第一次听说博主提到的东西,学习了。

读书人网 >其他相关

热点推荐