问题一: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或者它的子类有公共字段,我只发现了他有公共属性。为什么这里用的是公共字段呢。
