A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 许王斌 中级黑马   /  2012-10-23 16:11  /  1154 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public static List<T2> ExcuteList<T2>(string strSelectCmd, params SqlParameter[] paras)
  2.     {
  3.         using (SqlConnection conn = new SqlConnection(connStr))
  4.         {
  5.             SqlDataAdapter da = new SqlDataAdapter(strSelectCmd, conn);
  6.             da.SelectCommand.Parameters.AddRange(paras);
  7.             DataTable dt = new DataTable();
  8.             da.Fill(dt);

  9.             //将DataTable转成泛型集合List<T2>
  10.             if (dt.Rows.Count > 0)
  11.             {
  12.                 List<T2> list = new List<T2>();
  13.                 foreach (DataRow row in dt.Rows)
  14.                 {
  15.                     //(1)获得泛型类型
  16.                     Type t = typeof(T2);
  17.                     //(2)根据类型创建该类型的对象
  18.                     T2 model = (T2)Activator.CreateInstance(t);
  19.                     //(3)根据类型 获得 该类型所有属性定义
  20.                     PropertyInfo[] properties = t.GetProperties();
  21.                     //(4)遍历属性数组
  22.                     foreach (PropertyInfo p in properties)
  23.                     {
  24.                         string colName = p.Name;
  25.                         object colValue = row[colName];
  26.                         p.SetValue(model, colValue, null);
  27.                     }
  28.                     list.Add(model);
  29.                 }
  30.                 return list;
  31.             }
  32.         }
  33.         return null;
  34.     }
复制代码
我弄不懂,谁给讲讲啊
             //(2)根据类型创建该类型的对象
                    T2 model = (T2)Activator.CreateInstance(t);
                    //(3)根据类型 获得 该类型所有属性定义
                    PropertyInfo[] properties = t.GetProperties();
                    //(4)遍历属性数组
                    foreach (PropertyInfo p in properties)
                    {
                        string colName = p.Name;
                        object colValue = row[colName];
                        p.SetValue(model, colValue, null);
                    }
                    list.Add(model);

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

1 个回复

正序浏览
T2 model = (T2)Activator.CreateInstance(t);
动态生成以个model,这里面都是反射里面的东西
PropertyInfo[] properties = t.GetProperties(); 获得所有的属性
然后遍历每个属性
p.SetValue(model, colValue, null); 这是给属性附值,model表示当前实例,后面是值,后面不用管

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马