来了个新玩意:代码生成工具。

读者水平:懂一点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

模板名称

模板文件的全路径