基于配置的ORMapping框架浅析之5 (类代码生成器)
来源:互联网 发布:surface 无网络 编辑:程序博客网 时间:2024/05/21 10:21
这一节详细描述一下代码生成器的工作远离和机制
其实目的很简单,就是根据框架的结构,自动为实体生成实体类代码和相关的数据控制类代码
我的设计思路是:把类实体的结构特征进行抽象分解,用另外一组类结构来表达类,接口,属性,方法等等
比如对于一个实体类:
类由以下几个部分组成
声明部分
属性部分
声明部分又细分为: 修饰符,类名称,继承/泛化的信息
属性部分又可细分为:修饰符,数据类型,属性名称,(对于Visual 2008版本以前的,还需要分出私有字段以对应属性)
- //Visual 2008
- public string Name
- {
- get;
- set;
- }
- //Visual 2005
- private string m_Name;
- public string Name
- {
- get
- {
- return m_Name;
- }
- set
- {
- m_Name = value;
- }
- }
各部分详细说明:
ProjectDefine 项目定义类,里面含有 命名空间,引用的类库等属性
CLassDefine 类定义类
InterFaceDefine 接口定义类
EnumDefine 枚举定义类
ObjectDefine 对象定义类,里面含有上述3个定义类的公共属性(对象限定符,名称等等)
PropertyDefine 属性定义类
BasicPropertyDefine 基础属性定义类,该类的数据类型主要是系统的内建类型
ComplicatedPropertyDefine 复杂属性定义类,该类的数据类型主要是自定义的
DataTypeDefine 数据类型定义类
BasicDataTypeDefine (int,string,DateTime等等)
ComplicatedDataTypeDefine 复杂数据类型定义类
这里没有在定义字段定义类了,因为Visual 2008 在定义属性的时候,不再需要描述一个字段与其对应了
当然在这个粗略图上,还可以加上你自己的框架所需要的元素,比如数据库实例名称,如果要使用标签声明式编程的一些东西
以下是我在visual 2005上的开发的全类图
注意:Location 是坐标位置类,主要是以后实现图形拖拉时使用的
DataMapperDefine这些类实际和我的框架有关,如果你只是生成实体类,这些可以不用定义的
至于最后的存储,我使用了二进制序列化存储,没有使用数据库进行存储。
当你把这个核心结构定义好了后,就可以设计界面来生成类,接口和枚举了
如何生成代码?
1 Codom
2 StringBuilder
都可以的,用Codom的好处很多,也可直接生成VB和C#的代码,但STringBuilder写的快(呵呵)
至于界面我就在这里说了,因为我写的界面很难看,虽然能生成。
- 基于配置的ORMapping框架浅析之5 (类代码生成器)
- 基于配置的ORMapping框架浅析之1
- 基于配置的ORMapping框架浅析之1(以自己开发的框架为例子)
- 基于配置的ORMapping框架浅析之2(以自己开发的框架为例子)
- 基于配置的ORMapping框架浅析之3(以自己开发的框架为例子)
- 基于配置的ORMapping框架浅析之4(面向方面的AOP切面思想引入)
- AdminEAP框架:基于AdminLTE的代码生成器
- JEECG v2.3 基于代码生成器的智能开发框架
- 基于代码生成器的J2EE智能开发框架 JEECG
- JEECG - 基于代码生成器的J2EE智能开发框架 续二: 代码生成器使用规则
- 基于Mybatis的代码生成器
- ormapping框架和jdbc的比较
- JEECG - 基于代码生成器的J2EE智能开发框架 续四: 查询条件SQL生成器设计思路
- 基于python的c++ 类空实现代码生成器
- JEECG--基于代码生成器的智能开发框架,帮助解决50%的重复工作
- JEECG - 基于代码生成器的J2EE智能开发框架 杂记:【演示视频和源码】
- JEECG - 基于代码生成器的J2EE智能开发框架 续一:开发环境搭建步骤
- JEECG - 基于代码生成器的J2EE智能开发框架 续五:权限设计
- 存储过程用来在某个数据库中的所有表中查找某一字符串
- Myeclpse6.0+Axis2 返回对象数组(List)的webservice例子
- linux下jdk环境变量的设置
- Membership学习(二)membership入门
- 获取应用程序目录大全
- 基于配置的ORMapping框架浅析之5 (类代码生成器)
- Google 广告
- Bind 9.4.0rc2 安装笔记(一步步学习建立简易DNS)
- PKI-银企直连
- .Net开源程序大全
- jquery 入门的两篇不错的文章 (1)
- mysql (时间)日期相减取天数
- dojo.byId and dijit.byId
- 解析oracle的rownum