商讯信箱
用户名:
@
vip.it168.com
free.it168.com
udc.it168.com
staff.it168.com
it168.com
密 码:
注册
|
忘记密码
登录
个人用户
经销商
用户名:
密 码:
注册
|
忘记密码
验证码:
看不清?
用户名:
密 码:
注册
|
忘记密码
登录
注册
返回首页
门户
|
论坛
|
Blog
|
新闻
|
文档
|
Tag
|
下载
|
搜索
|
培训
|
WiKi
|
IXPUB
|
投稿
|
专题
频道:
Oracle
|
DB2
|
SQL Server
|
ERP
|
SCM
|
Java
|
微软技术
|
开源
|
项目管理
|
SOA
|
商业智能
|
IBM软件技术
您的位置:
首页
>
技术频道
> 正文
使用C# 2.0实现语言无关的代码生成器
[
收藏此页
] [
打印
]
作者:
IT168 极地圣火
2007-09-12
内容导航:
什么是CodeDom?
第1页:
什么是CodeDom?
第2页:
实现CodeWizard
第3页:
数据表类的定义
第4页:
属性的生成
第5页:
生成源代码
【IT168 专稿】
一、什么是CodeDom?
现在的程序规模越来越大,虽然在计算发展的几十年间,产生了许多快捷、高效的编程语言和开发工具,如C#、Visual Studio、java等。也产生了许多用以辅助软件设计、开发的思想和方法,如UML、OOP、Agile等。尽管利用这些技术和方法可以大大提高程序编写的效率,但是仍可能有重复的编码工作。因此,现在出现了许多可以自动产生源代码或者目标文件的软件,即Code Wizards。
一般这些Code Wizards在生成源代码时都是通过设置模板文件,然后根据这些模板文件生成源代码。有很多Code Wizards只能生成固定的语言(如java、C#等)。虽然有一些Code Wizards可以生成多种语言,但也只是固定的几种。而且生成源代码部分都是显示地固定在程序中。这样非常不易扩展。如CodeSmith系统,这是一个非常不错的Code Wizard。它使用一个扩展名为cst的文件来设置模板。这个模板文件的格式类似于Asp.net。如果想生成C#源代码,必须要在其中显示地标明,并且模板的固定部分要使用C#语言编写。如果这样的话,同样功能要生成不同语言的代码,如C#和VB.net。就要编写两个模板文件。这是非常不方便的。
从以上的描述来看, Code Wizard所面临的一个重要问题就是如何使用一个模版文件来生成不同语言的源代码。幸好Microsoft提供了一种解决方案,这就是CodeDOM技术。CodeDOM的全称是代码文档对象模型(Code Document Object Model)。整个CodeDOM就是一张对象图(object graph)。它用这张图中的所有对象描述了面向对象语言中的几乎所有的语法现象,如类、接口、方法、属性等。
CodeDOM
通过对象模型对语言进行了抽象,然后利用具体语言所提供的生成源代码的机制来生成源代码,并可调用相应的编译器将源码生成*.dll或*.exe。从而可以达到与语言无关的目的。图1
描述了使用
CodeDOM
生成和编译源代码的过程。
图1 CodeDom生成和编译源代码的过程
从上图可以看出,CodeWizard只使用CodeDOM对语言进行抽象,然后通过CodeDomProvider生成源代码。最后通过编译器生成中间语言。下面将详细讨论如何利用CodeDOM来实现CodeWizard。
1
1
2
3
4
5
【内容导航】
第1页:
什么是CodeDom?
第2页:
实现CodeWizard
第3页:
数据表类的定义
第4页:
属性的生成
第5页:
生成源代码
©版权所有。未经许可,不得转载。
[责任编辑:
李宁
]
[an error occurred while processing this directive]
[an error occurred while processing this directive]
[an error occurred while processing this directive]
CopyRight 1999-2006 itpub.net All Right Reserved. E-mail:Webmaster@itpub.net
北京皓辰广域网络信息技术有限公司. 版权所有
京ICP证:010037号
联系我们
法律顾问