public class DataToEnity<T> where T : new()
{
public static T DataRowToEntity(DataRow dr)
{
//1.获取类型
Type type = typeof(T);
//2.创建实例
T temp = Activator.CreateInstance<T>();
//3.获取属性
PropertyInfo[] properties = type.GetProperties();
// 4.遍历属性,对属性设置 对应的值
foreach (PropertyInfo p in properties)
{
//5. 判断 属性名称是否出现在 这个表的列明中
if (dr.Table.Columns.Contains(p.Name))
{
//6.判断 列中的值是否为 “空”
if (dr[p.Name] == DBNull.Value)
{
continue;
}
Type pt = p.PropertyType;
// 对可空类型的处理
if (pt.IsGenericType && pt.GetGenericTypeDefinition().Equals(typeof(Nullable<>)))
{
// 获取 可空类型 的 基类型
NullableConverter nc = new NullableConverter(pt);
pt = nc.UnderlyingType;
}
object tempValue = Convert.ChangeType(dr[p.Name], pt);
p.SetValue(temp, tempValue);
}
}
return temp;
}
}