利用反射的特性将DataReader对象转化为List集合

问题:将SqlDataReader对象转换为List<T>集合

思路:

1,利用反射的特性得到对应实体Model的公共属性

  Type type = typeof(T);  
  PropertyInfo[] p = type.GetProperties();  
这样就得到了该实体Model中的属性  

2,利用反射创建该类的实例

var model = Activator.CreateInstance<T>();  

 3,遍历该实体中的所有属性,将该实例插入到集合中

    整体代码如下:

 1 using System;  
 2 using System.Collections.Generic;  
 3 using System.Reflection;  
 4   
 5 namespace TestService  
 6 {  
 7     public class Test<T> where T:class  
 8     {  
 9         public List<T> GetList(MySql.Data.MySqlClient.MySqlDataReader reader)  
10         {  
11             List<T> list = new List<T>();  
12             Type type = typeof(T);  
13             PropertyInfo[] p = type.GetProperties(); //得到该T类中的所有公共属性
14   
15             while (reader.Read())  
16             {  
17                 var model = Activator.CreateInstance<T>();  
18                 foreach (var item in p)  
19                 {  
20                     if (item == null)  
21                     {  
22                         continue;  
23                     }  
24                     item.SetValue(model, reader[item.Name], null);  
25                 }  
26                 list.Add(model);  
27             }  
28            reader.Close();  
29            return list;  
30         }  
31     }  
32 }  

 

 

转载于:https://www.cnblogs.com/luoyefeiwu/p/3458945.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值