来了个新玩意:代码生成工具。
读者水平:懂一点ASP.Net,会写三层架构,对程序员枯燥的生活有一定认识。
使用的工具:CodeSmith4.0,C#,NotePad,SqlServer2008。
提要:CodeSmith是一款以大批量生成代码为目标的工具,可以生成的代码包括各种编程语言代码,以及各种标记语言的代码,CodeSmith是以解除程序员编写大量的,有规律的,重复性劳动为己任。
前提:
1. 良好的数据库设计:CodeSmith的工作需要从数据库中获得相当多的信息,良好的数据库设计可以使设计更简单。
2. 一种以上的设计模式:通俗的说就是,你知道代码应该怎么写。
3. 初步.Net语言基础:在CodeSmith中可以使用的语言为.Net支持的语言。
模板:CodeSmith生成代码的基础为数据库,生成代码依赖于你编写的模板。
模板分成三部分:声明,输出,函数。
声明部分包括CodeTemplate,Property,Assembly,Import,Register,Map,XmlProperty。
CodeTemplate声明:
CodeTemplate声明的属性 | ||
Language | 语言 | 编写输出和函数部分使用的语言 |
TargetLanguage | 目标语言 | 生成代码的语言 |
Src | 源文件 | 模板中使用的类文件名称 |
Inherits | 继承的类 | 模板继承自的类名 |
Debug | 调试 | 是否需要调试 |
Description | 描述 | 简介 |
ResponseEncoding | 输出编码格式 | 设置输出内容的编码格式 |
CodeTemplate声明为必选声明。
Language:一般可以使用C#,VB,JScript等语言,此处要慎重,尽量选择熟悉的语言。
TargetLanguage:通过模板生成的代码的语言,一般来说,无关紧要,但还是尽量实事求是的写吧,因为CodeSmith需要这个属性来给代码着色。
Src和Inherits:这两个属性非常接近,都是我们要写的模板的父类,Src写的是源文件名称路径,Inherits写的是继承的父类名称。这两个属性可以不设置。
Debug:可选True或False,用来决定是否调试,简单模板一般设置为False。
ResponseEncoding:如果要让你的模板生成的内容中包括中文,那么设置这个属性为UTF-8。
比较典型的CodeTemplate声明如下:
<%@ CodeTemplate Language="C#" TargetLanguage="C#" Src="" Inherits="" Debug="False" Description="产生实体类" ResponseEncoding="UTF-8" %>
Property声明:
Property声明属性 | ||
Name | 名称 | 类似变量名称 |
Type | 类型 | 类似变量类型 |
Default | 默认值 | 默认值 |
Optional | 是否可选 | Bool类型,True:可选,False:必选 |
Category | 分组名称 | |
Description | 描述 |
Assembly声明:
Assembly声明属性 | ||
Name | 名称 | 程序集名称,不包括.dll后缀 |
Assembley声明类似.Net工程中的引用程序集。
Import声明:
Import声明属性 | ||
Name | 名称 | 命名空间 |
Import声明类似.Net工程中的使用命名空间,类似于using System;。
Register声明:
Register声明属性 | ||
Name | 名称 | 将模板作为一个类的别名使用 |
Template | 模板名称 | 模板文件的全路径 |
转载于:https://blog.51cto.com/broncho/1308653