反射取值问题,三百里加急!!!
写了一个方法:
用实体类obEntity的属性值赋给DataRow相同名字的行字段,但是出错,知道错出在哪里,但是不知道怎么改过来(刚开始学反射),哪位帮忙看看,改一改,深更半夜继续等...
不甚感激,临表涕零~~~~
public static DataRow fillDataRowWithEntity(DataRow dr, Object obEntity)
{
DataTable dt = dr.Table;
Type tpEntity = obEntity.GetType();
System.Reflection.PropertyInfo[] pis = tpEntity.GetProperties();
foreach (DataColumn dc in dt.Columns)
{
foreach (System.Reflection.PropertyInfo pi in pis)
{
if (dc.ColumnName == pi.Name && (dc.DataType.Name == pi.PropertyType.Name))
{
dr[dc.ColumnName] = pi.GetValue(tpEntity, null); //该行出错,提示
}
}
}
return dr;
}
------解决方案--------------------是不是DataRow里字段类型和属性的数据类型不一致啊
------解决方案--------------------pi.GetValue(obEntity, null)
应该是这样的 刚才没注意看
------解决方案--------------------pi.GetValue(obEntity, null)
这里得到的是什么啊?
dr[dc.ColumnName] 能是一样的类型吗?
好好设置断点调试一下