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

反射取值问题,三百里加急!!!
写了一个方法:

用实体类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] 能是一样的类型吗?
好好设置断点调试一下