在前面的教程CodeSmith 使用教程(3): 自动生成Yii Framework ActiveRecord我们使用了主,从模板来实现了从数据库为Yii Framework生成多个表的ActiveRecord类定义,中CodeSmith项目中通过主模板和从模板的配合可以实现复杂的代码生成过程,主模板和从模板的关系有点类似主程序和子函数的关系。使用主-从模板的基本步骤如下:
- 定义从模板,从模板可以定义属性
- 定义主模板,中主模板中如果要使用从模板,首先需要在主模板中注册从模板,主模板中也也可以定义属性,主模板和从模板中的属性可以通过定义“合并”模式构造最终模板所定义的属性集合。
- 调用主模板,设置主模板和从模板所需的属性生成所需代码
注册子模板
<%@ Register Name="Header" Template="Header.cst"
MergeProperties="True" ExcludeProperties="IncludeMeta" %>
Name:子模板在主模板中的类型名称,在主要模板中可以通过该类型创建子模板的实例
Template: 子模板文件名
MergeProperties: 是否需要把子模板中定义的属性:“合并”到主模板中。缺省为False
ExcludeProperties: 如果子模板的属性合并到主模板中时需要排除的属性列表,以逗号分隔。
子模板复制主模板中的属性
MergeProperties=”True” 可以把从模板中的属性合并到主模板中,如果从模板需要引用主模板的属性,比如主模板中定义了服务器地址,在多个子模板中都需要引用这个属性,此时可以通过复制父模板属性CopyPropertiesTo
来实现:
// instantiate the sub-template
Header header = this.Create<Header>();
// copy all properties with matching name and type to the sub-template instance
this.CopyPropertiesTo(header);
CopyPropertiesTo方法比较主模板中定义的属性和子模板中定义的属性,如果发现从模板中定义的属性和主模板中定义的属性名称类型相同(匹配)则把主模板中属性值复制到子模板中。
设置子模板属性
在主模板中要创建子模板的实例,可以直接通过Create方法
// instantiate the sub-template
Header header = this.Create<Header>();
// include the meta tag
header.IncludeMeta = true;
Create中的Header为注册子模板时Name来定义的类型,通过Create创建子模板的实例后,就直接可以通过该实例的属性来访问子模板中的属性,比如上面代码中IncludeMeta为子模板中定义的一个属性。
<header style="padding: 15px 0px 0px; border: 0px; margin: 0px; font: inherit; vertical-align: baseline; color: rgb(85, 85, 85); font-family: 'Times New Roman', Helvetica, serif; font-size: 14px; line-height: 21px;"></header><header style="padding: 15px 0px 0px; border: 0px; margin: 0px; font: inherit; vertical-align: baseline; color: rgb(85, 85, 85); font-family: 'Times New Roman', Helvetica, serif; font-size: 14px; line-height: 21px;"><span style="padding: 0px; border: 0px; margin: 0px; font: inherit; vertical-align: baseline; line-height: inherit;">从子模板输出结果</span></header><header style="padding: 15px 0px 0px; border: 0px; margin: 0px; font: inherit; vertical-align: baseline; color: rgb(85, 85, 85); font-family: 'Times New Roman', Helvetica, serif; font-size: 14px; line-height: 21px;">创建好子模板的实例,设置好子模板的属性,在主模板中就可以让子模板输出结果,有几种方法可以从子模板输出内容。</header><header style="padding: 15px 0px 0px; border: 0px; margin: 0px; font: inherit; vertical-align: baseline; color: rgb(85, 85, 85); font-family: 'Times New Roman', Helvetica, serif; font-size: 14px; line-height: 21px;">第一种是把子模板生成的结果直接插入到主模板中</header><header style="padding: 15px 0px 0px; border: 0px; margin: 0px; font: inherit; vertical-align: baseline; color: rgb(85, 85, 85); font-family: 'Times New Roman', Helvetica, serif; font-size: 14px; line-height: 21px;"><pre name="code" class="csharp">// instantiate the sub-template.
Header header = this.Create<Header>();
// render the sub-template to the current output stream.
header.Render(this.Response);
</pre>
<br><span style="color: rgb(85, 85, 85); font-family: 'Times New Roman', Helvetica, serif; font-size: 14px; line-height: 26px;">第二种方法是把结果输出到单独的文件中:</span><br></header><header style="padding: 15px 0px 0px; border: 0px; margin: 0px; font: inherit; vertical-align: baseline; color: rgb(85, 85, 85); font-family: 'Times New Roman', Helvetica, serif; font-size: 14px; line-height: 21px;"><span style="color: rgb(85, 85, 85); font-family: 'Times New Roman', Helvetica, serif; font-size: 14px; line-height: 26px;"></span><pre name="code" class="csharp">// instantiate the sub-template.
Header header = this.Create<Header>();
// render the sub-template to a separate file.
header.RenderToFile("Somefile.txt");
</pre>
<br><span style="color: rgb(85, 85, 85); font-family: 'Times New Roman', Helvetica, serif; font-size: 14px; line-height: 26px;">具体的例子可以参见</span><a href="http://www.imobilebbs.com/wordpress/archives/4196" style="padding: 0px; border: 0px; margin: 0px; font: inherit; vertical-align: baseline; color: rgb(0, 133, 207); text-decoration: initial; line-height: 26px; outline: none; font-family: 'Times New Roman', Helvetica, serif; font-size: 14px;">CodeSmith 使用教程(3): 自动生成Yii Framework ActiveRecord</a></header>
分享到:
相关推荐
codesmith三层代码模板代码模板,codesmith三层代码模板代码模板,codesmith三层代码模板代码模板,codesmith三层代码模板代码模板,codesmith三层代码模板代码模板,codesmith三层代码模板代码模板。
以上各章内容构成了 CodeSmith 使用教程的基础,通过学习这些章节,开发者可以熟练掌握 CodeSmith 的核心功能,从而在项目开发中有效利用模板技术提高效率,减少错误。随着对 CodeSmith 深入的理解和实践,你会发现...
codesmith nettiers-2.3.1.zip codesmith 模板codesmith nettiers-2.3.1.zip codesmith 模板codesmith nettiers-2.3.1.zip codesmith 模板codesmith nettiers-2.3.1.zip codesmith 模板codesmith nettiers-2.3.1.zip...
CodeSmith教程[全].pdf CodeSmith教程[全].pdf CodeSmith教程[全].pdf CodeSmith教程[全].pdf CodeSmith教程[全].pdf CodeSmith教程[全].pdf CodeSmith教程[全].pdf CodeSmith教程[全].pdf CodeSmith教程[全].pdf ...
CodeSmith使用教程,开发资料,PDF高清淅版,对CodeSmith熟悉的朋友都知道,CodeSmith是一个基于模板的代码生成工具,它使用类似于ASP.NET的语法来生成代码或文本,本教程将带你掌握CodeSmith的使用方法和原理等...
CodeSmith安装包已经模板代码和使用教程,原版程序+注册机+教程(包含图文教程),视频教程,三层模板的通用代码生成模板
通过这两个文件的学习,开发者可以全面了解CodeSmith的使用方法,从创建简单的模板到构建复杂的代码生成流程,从而提升开发效率,减少手动编写重复代码的时间。同时,熟练掌握CodeSmith也能帮助团队保持代码一致性,...
**codesmith模板及使用说明** CodeSmith是一款强大的代码生成工具...通过熟练掌握和使用CodeSmith模板,开发者可以更专注于业务逻辑的实现,而不是基础代码的编写。希望这个更新后的C#模板能为你的开发工作带来便利。
总的来说,这份CodeSmith开发使用教程资料将全面覆盖CodeSmith的基本操作、高级特性以及实际应用案例,无论是新手还是老手,都能从中受益匪浅。通过学习和实践,你将能够充分利用CodeSmith的潜力,提升软件开发的...
【codesmith生成代码模板】是一种高效开发工具,它利用模板技术来自动化代码生成,从而极大地提高了软件开发的效率。在IT行业中,特别是在大型项目或快速迭代的开发环境中,手动编写重复性的代码会消耗大量时间,而...
MySQL数据库CodeSmith模板是一种高效的代码生成工具,它利用CodeSmith的强大功能,自动化地根据MySQL数据库中的表结构生成相应的代码,从而极大地提高了开发效率。CodeSmith是一款流行的数据驱动的代码生成器,它...
首先,我们从“CodeSmith使用基础教程 一 — 模板”开始。模板是CodeSmith的核心,它定义了生成代码的结构和逻辑。你可以创建自定义模板,以满足特定项目或编程语言的需求。模板可以包含变量、循环、条件语句等,...
总结起来,"简单的CodeSmith模板"是指使用CodeSmith的模板语言和功能创建的基础代码生成模板。掌握CodeSmith模板的编写技巧和应用,能显著提升开发团队的生产力,使他们能够快速地生成符合规范的、一致的代码,降低...
CodeSmith 是一种基于模板的代码生成工具,它使用类似于 ASP.NET 的语法来生成任意类型的代码或文本。与其他许多代码生成工具不同,CodeSmith 不要求您订阅特定的应用程序设计或体系结构。使用 CodeSmith,可以生成...
这个"CodeSmith模板集合C#版"包含了一系列预设的模板,能够帮助开发者自动生成常见的C#代码,例如对象持久化和数据库事务处理。下面将详细探讨这两个主要的知识点。 一、对象持久化 对象持久化是将程序中的对象...
《codesmith 3层代码生成模板详解》 Codesmith,作为一个强大的代码生成工具,深受广大开发者喜爱,尤其在企业级应用开发中,它能够显著提高开发效率,减少重复劳动。本文将详细介绍Codesmith的3层架构代码生成模板...
6. 使用模板库:CodeSmith社区提供丰富的模板资源,初学者可以先尝试使用现成的模板,再逐步学习自定义模板。 四、CodeSmith在asp.net开发中的应用 在asp.net开发中,CodeSmith常用于生成常见的数据访问层(DAL)、...
CodeSmith 是一种基于模板的代码生成工具,它使用类似于 ASP.NET 的语法来生成任意类型的代码或文本。与其他许多代码生成工具不同,CodeSmith 不要求您订阅特定的应用程序设计或体系结构。使用 CodeSmith,可以生成...
CodeSmith 是一种基于模板的代码生成工具,它使用类似于 ASP.NET 的语法来生成任意类型的代码或文本。与其他许多代码生成工具不同,CodeSmith 不要求您订阅特定的应用程序设计或体系结构。使用 CodeSmith,可以生成...
CodeSmith是一款强大的代码生成工具,它能够帮助程序员快速地生成大量重复性的代码,提高开发效率。这个"CodeSmith模板(抽象工厂版)"是专为实现抽象工厂设计模式定制的一套模板集合,适用于构建可扩展且易于维护的...