`
izuoyan
  • 浏览: 9222796 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

CodeSmith基础(四)

阅读更多

CodeSmith基础(四)

本文是翻译的第四篇,内容为在CodeSmith中使用的语法和标签的参考。

CodeSmith模板语法参考
本文的目的是在编写一个CodeSmith模板时遇到的各种类型的变量和对象提供参考。本文的目的不是要介绍CodeSmith,如果您想快速了解CodeSmith请查看我翻译的CodeSmith基础(一)和CodeSmith基础(二)。

标签
标签一般出现在模板的头部,被用做设置许多不同的属性。
代码模板的声明(CodeTemplate Directive
这个是模板中唯一必须的声明,包含一些模板特殊的属性,包含模板使用的语言、生成的语言和一些对于模板的描述。
例:
参数的介绍:
Language
:在开发编写模板时使用的语言,例如C#VB.NETJscript等。
TargetLanguage
:只是对模板代码的一个分类,不会影响生成的代码语言。是模板的一个属性,说明模板要基于那种语言生成相应的代码。例如你可以用CodeSmith从任何一种语言生成C#代码。
Description
:对于模板的一些说明信息,在CodeSmith Explorer中选中该模板时会显示这里的信息。
Inherits
:所有CodeSmith模板默认继承自CodeSmith.Engine.CodeTemplate,这个类提供模板使用的一些基本功能,像ASP.NET页面的Page类,这些被继承的类的属性可以被修改,但是这些新的类也必须继承CodeSmith.Engine.CodeTemplateCodeSmith也同样可以找到这个类,当然你要引入一个组件包含这个类。
Src
:在某些方面Src和继承Inherits比较相似,它们都允许你从其他的类包含一些功能进模板。这两个属性的区别是,Src可以让类与你的模板被动态编译,而Inherits仅允许你提供一个已经编译好的类或组件。
Debug
:可以确定是否在模板中可以包含调试符号。如果将这个属性设置为True,则可以使用System.Diagnostics.Debugger.Break()方法来设置断点。
LinePragmas
:设置为True,模板的错误将被指向到模板的源代码。设置为False,模板的错误将被指向到编译的源代码。

属性的声明(Property Directive
属性被用做在模板运行时声明一个使用的参数,例:
<%@CodeTemplateLanguage="C#"TargetLanguage="C#"Description="Generatesaclass."%>

<%@PropertyName="ClassName"Type="String"Default="Class1"Category="Context"Description="Thenameoftheclasstogenerate"Optional="true"%>

属性参数的介绍:

Name:模版使用的参数的名称。
Type
:参数类型可以是任何.NET有效的数据类型,例如简单的String类型或者是CodeSmithSchemaExplorer.DatabaseSchema类型。注意,类型必须是基类库的类型,例如用String或者Int32代替stringint
Default
:设置默认值。
Category
:用来说明这个属性在CodeSmith Explorer的属性面板中显示成什么类型,例如下拉选择、直接输入等。
Description
:在属性面板中对于这个属性的描述。
Optional
:设置这个属性是否是必须的,设置为True表明这个参数值可有可无,设置为False则这个参数必须有值。
Editor
:表明在属性面板中输入这个属性的值时使用何种GUI(图形界面编辑器)编辑器。
EditorBase
:编辑器使用的基本类型,如果没有被说明,UITypeEditor为默认编辑器。
Serializer
:这块我的水平不太会犯疑:)The serializer parameter specifies the IPropertySerializer type to use when serializing the properties values. This is equivalent to using a [PropertySerializerAttribute].

XML属性声明(XmlProperty Directive
例:属性的参数:
Name
:名称。
Schema
:这个参数用来指定一个X<rtx w:st="on">SD</rtx>文件,创建一个强类型对象模型。如果这个计划被指定,编译器会尝试分析这个X<rtx w:st="on">SD</rtx>文件并为这个计划生成一个强类型对象模型,这样可以在模版中使用强类型和智能与XML协同工作。如果这个计划没有被设定,这个参数将为XmlDocument类型并且将使用XML DOM去导航到一个XML内容并生成代码。
Category
:在CodeSmith属性面板中的类别。
Description
:描述。
Optional
:这个参数是否是必须的,如果设置为True,则参数不是必须的,反之False则为必须的。在设置为False时,如果用户没有提供参数则CodeSmith不能继续运行。

注册的声明(Register Directive
这个属性通常被用作引入另一个模版文件并与当前的模版文件同时被编译。这是一种使用子模版的交互方法。
例:
模版一旦被注册,就可以建立一个模版的实例,然后象这样设置它的属性:注册的参数:
Name
:代表被引入的模版的名称。它可以被用作创建一个模版的实例。
Template
:被引入模版文件的相对路径,它可以与当前的模版一起被动态的编译。
MergeProperties
:设置成True时,所有被引用的面板的属性将被动态的添加到当前模版中。
ExcludePorperties
:当使用MergeProperties时,你可能不需要某些属性被添加到当前模版中。将不需要的属性以逗号分隔放在这里,*号可以被用作通配符使用。

组件的声明(Assembly Directive
用作在模版中引用一个外部部组件,或者包含一个编译好的源文件。
例:
CodeSmith自动加载一些不同的组件:System, System.Diagnostics, System.ComponentModel, Microsoft.VisualBasic, CodeSmith.Engine

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

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

<%@XmlPropertyName="EntityMap"Schema="EntityMap.xsd"Optional="False"Category="Context"Description="EntityMapXMLfiletobasetheoutputon."%>

XML

<%@RegisterName="MySubTemplate"Template="MySubTemplate.cst"MergeProperties="True"ExcludeProperties="SomeExcludedPropertyName,SomeProperties*"%>

1<scriptrunat="template">
2publicvoidOutputSubTemplate()
3{
4MySubTemplatemySubTemplate=newMySubTemplate();
5
6//setanindividualpropertiesvalue.
7mySubTemplate.SomeExcludedPropertyName="SomeValue";
8
9//copyallpropertieswithmatchingnameandtypetothesubtemplateinstance.
10this.CopyPropertiesTo(mySubTemplate);
11
12//renderthetemplatetothecurrenttemplatesResponseobject.
13mySubTemplate.Render(this.Response);
14
15//renderthetemplatetoafile.
16mySubTemplate.RenderToFile("C:\SomeFile.txt");
17}
18</script>
<%@AssemblyName="SchemaExplorer"%>
<%@AssemblySrc="MySourceFile.cs"%>
<%@ImportNamespace="SchemaExplorer"%>

分享到:
评论

相关推荐

    CodeSmith使用基础教程

    总的来说,这个CodeSmith基础教程系列旨在全面介绍CodeSmith的使用,无论你是初学者还是有一定经验的开发者,都能从中受益。通过学习和实践,你将能够利用CodeSmith提高开发效率,减少重复编码的工作,专注于更高...

    CodeSmith初学者教程

    通过阅读和实践,你可以掌握CodeSmith的基础操作,并逐渐提升到高级应用。 总结,CodeSmith是一个强大的代码生成工具,通过学习和熟练运用,开发者能提高工作效率,降低出错率,专注在更重要的业务逻辑和创新上。...

    用CodeSmith生成nhibernate的映射文件说明

    此外,还需要具备一定的CodeSmith和NHibernate基础知识。 #### 三、具体步骤 ##### 3.1 打开CodeSmith并选择模板 首先启动CodeSmith工具,然后通过“文件”菜单中的“新建”选项来创建一个新的项目。在弹出的新建...

    codesmith 3层代码生成模板

    四、使用 Codesmith 模板的步骤 1. 配置数据源:设置数据库连接,确保Codesmith可以正确读取数据库结构。 2. 设计模板:根据项目需求,定制或选择预设的3层架构模板。 3. 生成代码:运行模板,Codesmith将自动生成...

    用CodeSmith生成数据库实体类的代码 VB

    ### 二、CodeSmith模板基础 在所提供的部分代码中,我们可以看到模板文件的基本结构: ```vb ``` 这段元数据定义了模板的基础属性,例如使用的脚本语言是VB.NET (`CodeTemplateLanguage="VB"`), 生成的目标语言...

    codesmith.rar 下载

    四、codesmith的使用技巧 1. **模板设计**:模板设计是使用codesmith的关键。熟练掌握模板语法,可以使生成的代码更符合个人编程风格和团队规范。 2. **参数化生成**:codesmith支持参数化生成,通过传递变量到...

    CodeSmith开发资料.pdf

    知识点一:CodeSmith基础概念和功能 CodeSmith是一个代码生成框架,它提供了一种机制,允许通过模板引擎和代码生成器来生成应用程序代码和数据库访问层代码。CodeSmith的核心功能包括: - 代码生成:能够根据预先...

    codesmith文档及模板.rar

    压缩包中的模板文件是 Codesmith 社区共享的宝贵资源,包括基础模板、通用模板以及特定场景下的定制模板。这些模板可以直接用于项目中,也可以作为参考,帮助开发者快速构建自己的模板库。 五、最佳实践 在实际使用...

    CodeSmith资源.

    #### 四、CodeSmith最佳实践 1. **版本控制**:对于团队协作项目来说,将CodeSmith生成的代码纳入版本控制系统是非常必要的。这有助于跟踪变更历史,方便回溯修改。 2. **持续集成**:结合CI/CD工具(如Jenkins、...

    codesmith 模板集合+简单教程

    1. 理解模板语法:codesmith 使用其特有的模板语言,学习并熟练掌握其语法是创建和修改模板的基础。 2. 定义变量和宏:模板中的变量和宏可以动态地替换为实际值,根据输入参数生成个性化代码。 3. 结构化设计:模板...

    codesmith学习资料

    一、基础概念与用途 Codesmith的核心功能是通过模板引擎将数据库结构转换为各种编程语言的代码,如C#、Java等。它通过读取数据库的元数据,自动生成诸如实体类、数据访问层、业务逻辑层以及控制层等代码,减少了...

    2008codesmith

    四、学习和使用Codesmith 要充分利用Codesmith,开发者需要学习模板语言的语法,并了解如何定义和使用数据模型。此外,理解各种内置函数和宏也有助于编写更复杂的模板。Codesmith官方文档和社区资源提供了丰富的...

    codesmith nhibernate

    codesmith nhibernate模板虽然能快速生成基础代码,但可能无法满足所有特定需求。开发者可以通过修改模板文件,定制更复杂的逻辑,例如添加验证规则、事务处理、缓存策略等。此外,还可以考虑与自动化构建工具(如...

    CodeSmith开发资料

    CodeSmith提供了一些基础模板类,如`Kid-li94`,这些类为开发者提供了构建复杂模板的基础框架。 #### 四、总结 CodeSmith是一款功能强大的代码生成工具,通过灵活的模板机制极大地提高了代码编写效率。无论是基础...

    codesmith users manual

    四、CodeSmithUsersGuide.pdf "CodeSmithUsersGuide.pdf"是codesmith的用户指南,提供了详细的工具使用教程,包括如何安装、配置、创建和运行模板,以及解决常见问题的方法。这份文档是学习和掌握codesmith的关键...

    CodeSmith课件1

    ### CodeSmith模板编写详解 #### 一、CodeSmith简介与应用背景 ...通过上述示例可以看出,CodeSmith模板不仅支持基础的变量输出和条件判断,还能够灵活地处理复杂的业务逻辑,从而大大提高代码生成的质量和效率。

    smithcode 教程 + 破解码

    CodeSmith 基础(四)........................................................................... 努力学习的熊31 CodeSmith 基础(五).......................................................................

    .net MVC权限管理工作流微信公众平台开发系统

    一、设计数据表 1.数据表主键设置为nvarchar(36) 2.必须包含Title字段(作为表单标题) ...四、.Net微信公众平台开发 WeiXinController.cs中封装了微信开发接口 在线浏览:http://qxw1194750243.my3w.com/Home

    nhibernate_template_4个模板文件

    在这个“nhibernate_template_4个模板文件”中,包含的四个模板文件是CodeSmith工具用于自动生成NHibernate相关代码的模版。CodeSmith是一款流行的代码生成工具,能够帮助开发者提高开发效率,减少重复工作。 1. ...

    微信开发JQMobile+JSSDK

    一、设计数据表 1.数据表主键设置为nvarchar(36) 2.必须包含Title字段(作为表单标题) ...四、.Net微信公众平台开发 WeiXinController.cs中封装了微信开发接口 JSSDKController.cs中微信JSSDK开发

Global site tag (gtag.js) - Google Analytics