悬赏分:5 浏览:464 次
类Company有以下属性
companyName,City...
常规方法赋值:
companyName= DataView1["companyName"].ToString();
City=DataView1["City"].ToString();
我想定义属性以后使用反射赋值:
DbDataReader dr = db.ExecuteReader("company");
Company model = new Company();
FillModel(model, dr);
可得到的值为空?
属性名称定义的和数据库定义的相同(包括大小写)。相关函数:
public void FillModel(object targetObj, DbDataReader reader)
{
if (!reader.Read()) { return; }
for (int i = 0; i < reader.FieldCount; i++)
{
System.Reflection.PropertyInfo propertyInfo = targetObj.GetType().GetProperty(reader.GetName(i));
if (propertyInfo != null)
{
if (reader.GetValue(i) != DBNull.Value)
{
propertyInfo.SetValue(targetObj, reader.GetValue(i), null);
System.Web.HttpContext.Current.Response.Write(targetObj.ToString() + ":" + reader.GetValue(i)+"<br>");//注意调用的时候重复输出companyName一个字段,值却是逐个字段的值
}
}
}
}
|
10个月前 wdx2008 : 把CompanyName注释掉输出的是类名Compay 这个类是Public的属性也是Public的 |
|
10个月前 wdx2008 : 要实现的功能其实很好理解,读取数据,并匹配数据库字段和属性字段,如果相等则把当前数据字段的值赋值给这个属性 |
|
10个月前 wdx2008 : 问题找到了,可是还是无法解决 先是忘了reader.Read() 现在就是值可以循环输出,属性始终都是空! 超级郁闷 |