C#发现之旅:基于反射和动态编译的快速ORM框架(上)
2010-09-30 21:08:28 来源:WEB开发网这个myRecordHelpers就是实体类型注册列表。该列表中键值就是实体对象类型,而它的数据值就是一个个动态生成的从RecordORMHelper派生的对象实例。我们定义了一个函数向该列表注册实体对象类型
public void RegisterType( Type t )
{
if( myRecordHelpers.ContainsKey( t ) == false )
{
this.GetBindProperties( t );
myRecordHelpers[ t ] = null ;
}
}
这个过程很简单,就是向该列表的键值列表添加实体对象类型,这里调用了GetBindProperties函数,该函数内部会仔细检查实体对象类型是否符合快速ORM框架的要求,若不符合则会报错,因此这里调用GetBindProperties函数就是检查实体对象类型是否合格。
ORM框架操作数据库前都会查询实体类型注册列表获得所需的数据库操作帮助器,也就是调用函数GetHelepr,其代码为
private RecordORMHelper GetHelper( Type RecordType )
{
RecordORMHelper helper = null ;
if( myRecordHelpers.ContainsKey( RecordType ))
{
helper = ( RecordORMHelper ) myRecordHelpers[ RecordType ] ;
if( helper != null )
{
return helper ;
}
}
else
{
this.GetBindProperties( RecordType );
myRecordHelpers[ RecordType ] = null;
}
BuildHelpers( null );
helper = ( RecordORMHelper ) myRecordHelpers[ RecordType ] ;
if( helper == null )
{
throw new ArgumentException("为类型 " + RecordType.FullName + " 初始化系统错误");
}
return helper ;
}
更多精彩
赞助商链接