要想知道CodeSmith到底有多强大那么我告诉你最好的方法就是去试试,尽管CodeSmith有很多高级甚至复杂的功能,但你不用掌握这所有的功能就能很好的用它来帮你生成代码。
在这一章,你将学习到如何使用CodeSmith生成一段有用的代码-强类型的hash表类,跟着我,保证你不到五分钟就能完成,并且你能领略到CodeSmith Explorer和CodeSmith Studio生成模版代码的强大功能。
2.启动CodeSmith Explorer



第一步要做的就是启动CodeSmith Explorer,就像Windows Explorer 组织存储在你计算机上的文件夹的功能类似,CodeSmith Explorer的主要功能是是组织模版文件,通过select Start > Programs > CodeSmith 3.0 > CodeSmith Explorer启动你的CodeSmith Explorer,在CodeSmith Explorer的初始界面包括了一些示例模版。


Codesys能编FX3U codesys v2.3 编程手册_数据库


3.打开一个模板


模板示生成代码的样式,CodeSmith提供一些很有用的基础模板,你也可以从

CodeSmith support site
下载到更多的模板,你也可以用CodeSmith开发你自己的模板。


        首先,点击根目录文件夹的加号


Codesys能编FX3U codesys v2.3 编程手册_模版_02

以cst为扩展名的文件就是CodeSmith模板,你可能已经从这些模板的名字猜出了它们的大致用途了吧。例如CSHashTable.cst 模板用于生成c#hash表类,双击这个模板(或者鼠标右键选择执行)打开它。

Codesys能编FX3U codesys v2.3 编程手册_hash表_03


4.设置属性

一个代码生成器如果每次都生成相同的代码那么根本就没用,当然如果你仅仅把它当成一个代码存储器那么就另当别论了。CodeSmith可以自定义属性来让你生成自定义代码。当你用CodeSmith Explorer打开一个模板文件,模板属性页会显示出模板所需要的属性。在CodeSmith生成代码之前你必须填写这些参数的值。CSHashTable模板需要四个字符串类型的属性(ClassName, ClassNamespace, ItemType, and KeyType)以及一个枚举类型的属性(Accessibility).。你可以为字符串类型的属性输入你想输入的任意值,而枚举型属性你只能通过下拉菜单来选取相应的值。作为第一次尝试,我们输入以下一些值:

Codesys能编FX3U codesys v2.3 编程手册_hash表_04

CodeSmith最大的优点就在于能定义不同类型的元数据属性。例如,你可以创建一个数据库表单属性,让使用者在数据库中选取表并生成代码。CodeSmith创建数据库表属性的特点我们将在以后的章节讲解。

我们回顾一下上一节的内容:我们利用CodeSmith Explorer了解了模板文件的基本构成。
下面我们就利用CodeSmith模板来生成一个代码:
1.生成代码

      当你按照前一节的步骤来做,那么现在你已经为生成我们的第一个模板代码做好了一切准备了。接下来你就可以按下模板属性页下面的生成按钮,CodeSmith会提取你输入的属性并把他们融合到生成的代码里面。接下来你可以使用Ctrl+C轻松的复制生成的代码了。

Codesys能编FX3U codesys v2.3 编程手册_hash表_05


如图所示,代码窗口中包含了320行hash表类代码,植入了IDictionary, ICollection, IEnumerable, and ICloneable接口。如果你是有经验的开发者的话,那么你肯定知道如果这些模板都是既定不变的写死了的话,那肯定是最让人头痛的事情。而CodeSmith 之所以是最理想的工具就在于你可以生成你自己的模板,这就确保了以后使用模板足够的灵活性。一切都是那么符合一个程序员的心意。

2.了解模板结构

       接着让我们来看看CSHashTable.cst 模板代码。如图所示,模板包含了CodeSmith 用于生成代码的结构。回到CodeSmith Explorer,在模板上点击鼠标右键选择编辑。将启动CodeSmith Studio打开模板进行编辑。

Codesys能编FX3U codesys v2.3 编程手册_数据库_06


      在接下来的章节你将了解到更多关于的细节。而现在,你仅仅对CodeSmith有了一点泛泛的了解,其次,你是不是已经发现CodeSmith模板语言和ASP.NET非常相似?以一些定义符作为开始,包含一些属性的声明。这些属性将在后面的代码中使用到。例如在模板中有这样一行:

namespace <%= ClassNamespace %>

在类命名空间“namespace”后面紧跟属性名称。
如果你不喜欢CSHashTable模板,你完全可以按照你的想法修改它。例如,你可以加一些对接口的注释。记得做好改变以后点击保存。
3.回顾


以下一些步骤是你使用CodeSmith生成模板所必须做的:

(1)启动CodeSmith Explorer

(2)选择模板

(3)输入属性值

(4)生成代码

好了,我们第一个模板代码就生成了!

转载于:https://blog.51cto.com/wuzoo/624369