1 /// <summary> 2 /// 根据反射通过DataRow给实体对象赋值 3 /// </summary> 4 /// <typeparam name="T">要被赋值的对象</typeparam> 5 /// <param name="dr">已赋值的行数据(DataRow类型)</param> 6 /// <returns>返回被赋值的对象</returns> 7 public static T ConvertToItemBean<T>(DataRow dr) where T : new() 8 { 9 //定义一个临时变量 10 string tempName = string.Empty; 11 T t = new T(); 12 // 获得此模型的公共属性 13 PropertyInfo[] propertys = t.GetType().GetProperties(); 14 //遍历该对象的所有属性 15 foreach (PropertyInfo pi in propertys) 16 { 17 tempName = pi.Name;//将属性名称赋值给临时变量 18 //检查DataTable是否包含此列(列名==对象的属性名) 19 if (dr.Table.Columns.Contains(tempName)) 20 { 21 // 判断此属性是否有Setter 22 if (!pi.CanWrite) continue;//该属性不可写,直接跳出 23 //取值 24 object value = dr[tempName].ToString().Trim(); 25 //如果非空,则赋给对象的属性 26 if (value != DBNull.Value) 27 pi.SetValue(t, value, null); 28 } 29 } 30 return t; 31 }