日期:2014-05-18  浏览次数:21473 次

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();