DataToEnity

  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;
        }

    }

 

posted @ 2017-11-23 00:48  kiamer  阅读(124)  评论(0编辑  收藏  举报