会员
周边
众包
新闻
博问
闪存
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
梦开始的地方
低调、严谨的程序员
博客园
首页
新随笔
新文章
联系
管理
订阅
问题集锦
问题一:linq中的
代码
/**/
///
<summary>
///
初始化数据库中有几个表
///
从方法实现中意图来看,这个方法主要在定义了强类型的DataContext才有意义
///
在强类型的DataContext里一般定义了Table
<Post>
之类的字段来表示数据库中有几个
///
表,该方法调用DataContext的GetTable方法设置这些字段的值
///
</summary>
///
<param name="schema"></param>
private
void
InitTables(
object
schema)
{
//
用反射遍历DataContext类(可能是它的子类)里所有的公有实例字段
foreach
(FieldInfo info
in
schema.GetType().GetFields(BindingFlags.Public
|
BindingFlags.Instance))
{
//
字段类型
Type fieldType
=
info.FieldType;
//
该字段是否是泛型的,并且是Table<>类型的,而且该字段的值为null
if
((fieldType.IsGenericType
&&
(fieldType.GetGenericTypeDefinition()
==
typeof
(Table
<>
)))
&&
(((ITable)info.GetValue(schema))
==
null
))
{
//
获取Table<TEntity>中TEntity的具体类型
Type type
=
fieldType.GetGenericArguments()[
0
];
//
调用DataContext的GetTable方法得到一个ITable对象
ITable table
=
this
.GetTable(type);
//
设置值
info.SetValue(schema, table);
}
}
}
我没有发现DataContex或者它的子类有公共字段,我只发现了他有公共属性。为什么这里用的是公共字段呢。
posted on
2009-11-30 20:49
pillow
阅读(
151
) 评论(
0
)
收藏
举报
刷新页面
返回顶部
公告