您的位置:首页 > 编程语言

强大的代码生成工具MyGeneration

2013-08-16 15:27 281 查看

强大的代码生成工具MyGeneration

MyGeneration是一个功能很强大的代码生成工具。通过编写包含各种类型脚本(C#,VB.Net,JScript,VBScript)的模板,通过数据库的表内容,生成你需要的各种代码。你可以用它来生成ORM的实体类,存储过程,SQL语句等等。我甚至用它来生成Asp.Net的页面(呵呵,我很懒)。

MyGeneration提供了强大的在线模版库,你可以通过访问其网站或者使用Template Browser中的在线模版功能按钮寻找你需要的模版。当然你也可以根据需要自己写模板。

我的NHibernate模板已经公布,并写了个随笔专门介绍它。详见“用我的MyGeneration模板生成NHibernate映射文件和关系(one-to-one,one-to-many,many-to-many) ”。
你可以从这里下载它的最新版本。

重要组件介绍

它由几个重要的外部组件组成,其中常用的有以下两个

MyMeta包含数据库中的信息。我们可以从这个库中获得想要的和数据库相关的信息。例如:数据库名,数据库里面的表,表里面的主键等等。

Zeus为MyGeneration提供了一个的框架,里面最常用的就是一组对WinFrom组件封装后的一套组件,通过这套组件我们可以动态的生成我们需要的界面(我们可以在这个界面中让模版使用者选择使用的参数),然后界面里面的信息可以为生成模版服务。

工作原理分析

MyGeneration的支持用多种脚本模式,其工作原理是一致的,只是通过不同的语言来表达。

我最常用的是C# Template。Template分为两个步骤运行,首先是通过脚本引擎执行Template Code和Interface Code中的脚本,生成Template Source和Interface Source的C#代码,然后执行Template Source,生成需要的代码。如下图

public abstract class DotNetScriptTemplate : _DotNetScriptTemplate
<%
public class GeneratedTemplate : DotNetScriptTemplate
%>

我们运行此模版可以看到输出。%><%里面的内容直接输出到结果,output.writeln的内容也输出到结果了。output是Interface里面自带的属性。有很多的功能。请参见Zeus的帮助文件。
You can toggle in out of script like this
  Hello world.
我们找到Interface Code,发现里面注释了些代码。我们把注释去掉后代码如下

public class GeneratedGui : DotNetScriptGui
public class GeneratedGui : DotNetScriptGui
<%
public class GeneratedTemplate : DotNetScriptTemplate
%>

两个foreach可以作用是相同的,我这里写两个是为了展示<%=%>的绑定功能。你可能会问绑定的两行为什么顶行了,因为其中的空格会显示在结果中,你可以自己试试效果。
其他代码很简单,我想大家都看得懂。
运行它看看结果

sysdiagrams
T_Child
T_Employee
T_Employee1
T_Parent
T_Person
T_Person1
T_Role
T_User
T_User_Role
**************************
sysdiagrams
T_Child
T_Employee
T_Employee1
T_Parent
T_Person
T_Person1
T_Role
T_User
T_User_Role

呵呵,成功了。
这只是个简单的示例。MyGeneration功能十分强大可以生成ORM的实体类,存储过程,SQL语句等等。
如果你也想自己写模板,你可以多看看Zeus和MyMeta的帮助文件,多看别人写得模板。相信你很快也能写出功能强大的模版。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: