Type.GetField()取值为空,请知道的帮忙解决一下
我有一个People类,里面有这些字段:
string name;
int height;
string eyeColor;
数据库是这样子设计的:
name varchar(50) not null,
height int null,
eyeColor varchar(10) null
C#代码中时这样子写的:
People people = new People();
if (dr.Read())
{
FillModel(people,dr);
}
public void FillModel(object model, IDataReader dr)
{
Type type = model.GetType();
FieldInfo fi;
for (int i = 0; i < dr.FieldCount; i++)
{
if (dr[i] != DBNull.Value)
{
fi = type.GetField(dr.GetName(i));
if (fi!= null)
{
fi.SetValue(model,dr[i]);
}
}
}
}
调试的时候,发现dr.GetName(i)的值跟类中字段的值是一样的,但是fi的值却是null,可郁闷,希望知道的可以帮帮忙看一下
------解决方案--------------------你查看该方法 Type.GetField()的重载,不是Public的 要加参数,
------解决方案--------------------估计是 private 的,把 Class 定义贴出来看看
------解决方案--------------------获取小写的name 用GetFeilds();
获取大写的Name 用GetPropties();