`
lyunabc
  • 浏览: 553781 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

CodeSmith 使用教程(6): 基本语法-声明和使用属性

 
阅读更多
CodeSmith的核心是模板,而使模板具有活力的就是属性,通过定义属性从而使代码模板能够根据配置生成所需的代码。在使用代码模板时首先也必须给模板定义的属性定义值才能使用CodeSmith通过模板产生代码。有些属性具有缺省值,这些属性可以不需要配置。

模板中的属性通过Property指令来定义:

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

属性参数的介绍:

  • Name:模版使用的参数的名称。
  • Type:参数类型可以是任何.NET有效的数据类型,例如简单的String类型或者是CodeSmith的SchemaExplorer.DatabaseSchema类型。注意,类型必须是基类库的类型,例如用String或者Int32代替string和int。
  • Default:设置默认值。
  • Category:用来说明这个属性在CodeSmith Explorer的属性面板中显示成什么类型,例如下拉选择、直接输入等。
  • Description:在属性面板中对于这个属性的描述。
  • Optional:设置这个属性是否是必须的,设置为True表明这个参数值可有可无,设置为False则这个参数必须有值。
  • Editor:表明在属性面板中输入这个属性的值时使用何种GUI(图形界面编辑器)编辑器。
  • EditorBase:编辑器使用的基本类型,如果没有被说明,UITypeEditor为默认编辑器。
  • Serializer 定义用于属性的IPropertySerializer类型。
  • OnChanged 为属性发生变化时定义事件处理代码。
  • DeepLoad 只用在SchemaExplorer对象,当为True,SchemaExplorer一次性取得有关数据库Schema的所有信息而避免多次查询数据库。

在配置属性时,每个属性根据其类型和Editor不同而使用不同的配置界面,对应一些简单的类型,比如Int,String可以直接编辑,而对于数据库类型可以使用Schema Explorer,CodeSmith预先定义了一些属性编辑器,此外也可以通过自定义为某些特殊的属性类型定义新的属性编辑器,这在后面再介绍。通常情况下无需自定义。

在某些情况下,如果所定义的属性值为一个列表中的某个值,比如在CodeSmith自带的模板SortedList.cst 中定义了一个属性用来为所生成的类设置可见性:

20130105001

这可以通过定义一个枚举类型来实现:

<script runat="template">
Public Enum AccessibilityEnum
      [Public]
      [Protected]
      [Friend]
      [ProtectedFriend]
      [Private]
End Enum
</script>

然后为所定义的属性的类型定义为这个枚举类型:

<%@ Property Name="Accessibility" Type="AccessibilityEnum"
Category="Options" Description="The accessibility of the class to be generated." %>

由于属性可以定义为可选(Optional),因此在模板中需要检测某个的属性是否配置过,比如下面定义了一个属性为Optional

<%@ Property Name="ClassNamespace" Type="System.String" Optional="True"
Category="Context"
Description="The namespace that the generated class will be a member of." %>

在模板中脚本需要检测这个属性是否有值可以通过下面代码来实现:

<% if (ClassNamespace != null && ClassNamespace.Length > 0)
{ %>namespace <%= ClassNamespace %>{<% }
%>

从上面也可以看出,在脚本中使用属性直接使用属性名字即可,无需加前缀(比如$之类的前缀)。

分享到:
评论

相关推荐

    CodeSmith使用教程 - v1.01

    ### 第 6 章:基本语法 - 声明和使用属性 在 CodeSmith 中,属性是模板中的关键元素,它们存储数据并可以在模板中引用。这一章将阐述如何声明和使用属性,以及如何从外部数据源(如数据库或 XML 文件)填充这些属性...

    CodeSmith入门教程

    - **属性声明**:不同于ASP.NET,CodeSmith支持模板属性声明,这些属性可以用来配置模板的行为。 2. **CodeSmith工具组件**: - **CodeSmith Studio**:这是一个设计和编译模板的集成环境,提供了图形化的模板...

    CodeSmith 基础教程 word版

    - **变量输出**:使用 `&lt;%= expression %&gt;` 格式输出变量值,如 `&lt;%= ThisIsString %&gt;` 和 `&lt;%= ThisIsTable.Name %&gt;`。 - **调用函数**:当需要执行更复杂的计算或操作时,可以在函数区域定义函数,然后在模板区域...

    codesmith使用方法

    4. **引用声明区域**:通过 `&lt;%@ Assembly %&gt;` 和 `&lt;%@ Import Namespace="..." %&gt;` 引入所需的程序集和命名空间,如数据库操作所需 `SchemaExplorer` 和文件操作所需 `System.IO`。 5. **模板区域**:这是实际生成...

    CodeSmith模板

    2. **编写CST文件**:使用CST语法编写模板,可以包含字段名、属性、方法等动态内容,同时也可以插入静态文本,如注释、版权信息等。 3. **使用CodeSmith参数**:在模板中引用CodeSmith提供的参数,如数据库表名、...

    codesmith入门

    【codesmith入门】这篇文档是针对codesmith这款代码生成工具的快速入门指南,旨在帮助初学者了解和掌握codesmith的基本操作和使用技巧。codesmith是一款强大的基于模板的代码生成工具,利用C#、VB.NET或Jscript等...

    codesmith超级好的学习教程word版本代码生成器net必备学习.pdf

    - **属性设置区域**:定义模板所需的外部参数,包括不同类型的参数声明,如String、Bool、DatabaseSchema、TableSchemaCollection和TableSchema。 - **注册模板区域**:用于注册并调用其他模板,需提供所需参数。 ...

    codesmith教程.pdf

    首先,从文件标题和描述中我们可以看出,这是关于CodeSmith的教程。CodeSmith 是一个基于模板的代码生成器,适用于 .NET 环境,特别是与C# 配合使用。它允许开发者通过模板快速生成数据库访问代码、实体类、数据访问...

    codesmith生成实体类简单模板

    一个基本的实体类模板可能包括类的命名、属性的声明以及属性的注释等部分。例如,模板可能会有以下结构: ```csharp foreach (Column column in Table.Columns) {#&gt; public &lt;%= column.DbType.CSharpType %&gt; ...

    CodeSmith的使用.doc

    3. **调用函数**:使用标准的C#条件语句或循环结构,如`(条件){%&gt;...&lt;%}%&gt;`或`(循环体){%&gt;...&lt;%}%&gt;`,以实现逻辑判断或循环操作。 4. **调用模板**:通过创建实例并调用`Render()`方法来执行子模板,实现模板间的...

    学习codesmith超级好的学习教程word版本代码生成器net必备学习.pdf

    本文主要围绕如何使用CodeSmith Professional v5.1.3.8510进行模板编写和设置,以便支持中文显示和文件编码,并介绍其主要的六个模板区域。 首先,确保CodeSmith支持中文显示和保存。在“Tools”菜单中选择...

    CodeSmith应用全集

    这个应用全集主要是为了帮助那些在探索和使用CodeSmith过程中遇到中文文档不足的开发者,提供一系列由作者和同事共同编写的(或翻译的)教程和指南。 首先,创建一个CodeSmith模板的基本步骤涉及以下几个关键点: ...

    codesmith超级好的学习教程代码生成器net必备学习分享.pdf

    这个超级好的学习教程主要介绍了如何使用CodeSmith进行模板设计和代码自动生成,特别强调了在处理中文字符时的设置方法以及模板的六个关键区域。 首先,确保CodeSmith支持中文显示和保存至关重要。在【工具】-&gt;...

    CodeSmith课件1

    #### 二、CodeSmith模板配置与基本语法 ##### 2.1 模板配置 CodeSmith模板文件通常以`.cst`为扩展名。模板文件中的关键部分包括元数据声明、属性定义、注册其他模板以及代码生成逻辑等。元数据声明用于指定模板的...

Global site tag (gtag.js) - Google Analytics