首页 > 代码库 > DataReader反射泛型对象
DataReader反射泛型对象
昨天听同学说,要把DataReader对象转成实体对象,要写一个通用的方法。想了下用反射应该可以做到。项目中一般都是用第三方组件来做数据访问层,如,Nhibernate、ef等。于是自己想写个简单例子玩玩。
其实,实现起来和简单。一个泛型方法搞定。代码如下:
1 public List<T> ToList<T>(string _sql) where T :class ,new() 2 { 3 4 using (var conn = new SqlConnection(connStr)) 5 { 6 using (var comm = new SqlCommand(_sql, conn)) 7 { 8 conn.Open(); 9 SqlDataReader dataReader = comm.ExecuteReader();10 if (dataReader.HasRows)11 {12 List<T> dataList = new List<T>();13 14 while ((dataReader.Read()))15 {16 T obj = new T();17 //获取泛型对象的所有属性18 var properties = obj.GetType().GetProperties();19 foreach (var property in properties)20 {21 for (int i = 0; i < dataReader.FieldCount; i++)22 {23 //查找与属性名称相同的列24 if (dataReader.GetName(i).Equals(property.Name,StringComparison.CurrentCultureIgnoreCase))25 {26 //给新建的obj对象的属性赋值27 property.SetValue(obj,dataReader[i]);28 }29 }30 }31 dataList.Add(obj);32 }33 conn.Close();34 return dataList;35 }36 37 }38 }39 return null;40 }
完整代码链接:http://download.csdn.net/detail/ybealq/7767735
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。