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 %>{<% }
%>

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CodeSmith 是一种基于模板的代码生成工具,它使用类似于 ASP.NET 的语法来生成任意类型的代码或文本。与其他许多代码生成工具不同,CodeSmith 不要求您订阅特定的应用程序设计或体系结构。使用 CodeSmith,可以生成包括简单的强类型集合和完整应用程序在内的任何东西。 当您生成应用程序时,您经常需要重复完成某些特定的任务,例如编写数据访问代码或者生成自定义集合。CodeSmith 在这些时候特别有用,因为您可以编写模板自动完成这些任务,从而不仅提高您的工作效率,而且能够自动完成那些最为乏味的任务。CodeSmith 附带了许多模板,包括对应于所有 .NET 集合类型的模板以及用于生成存储过程的模板,但该工具的真正威力在于能够创建自定义模板。 基本说明: CodeSmith 是一种语法类似于asp.net的基于模板的代码生成器,程序可以自定义模板,从而减少重复编码的劳动量,提高效率。 安装CodeSmith并且注册后发现有两个可运行程序CodeSmith Studio.exe和CodeSmith Explorer.exe CodeSmith Studio.exe用来创建自定义模板 CodeSmith Explorer.exe用来导入模板并且生成代码 打开 CodeSmith Studio.exe,新建一个C#模板。发现有如下类似与asp.net的标识符号 软件特性: 1.他可以用于生成C#,VB.NET,TSQL以及其他任何语言代码 2.他本身是可以编程的(这是他的灵活性之源) 3.他提供了强大的SchemaExplorer对象,使数据库储过程的生成非常容易 4.有了他,你不会再向我一样埋怨从一个项目到另一个项目时,需要重新写许多代码.因为你只需要一套模板而已 5.他使用的语法是典型的ASP.NET语法,并且,可以像我们写ASP那样将代码和静态内容混和撰写(好像在写ASP的时代一样)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值