问题:将SqlDataReader对象转换为List<T>集合
思路:
1,利用反射的特性得到对应实体Model的公共属性
Type type = typeof(T);
PropertyInfo[] p = type.GetProperties();
这样就得到了该实体Model中的属性
2,利用反射创建该类的实例
var model = Activator.CreateInstance<T>();
3,遍历该实体中的所有属性,将该实例插入到集合中
整体代码如下:
using System;
using System.Collections.Generic;
using System.Reflection;
namespace TestService
{
public class Test<T> where T:class
{
public List<T> GetList(MySql.Data.MySqlClient.MySqlDataReader reader)
{
List<T> list = new List<T>();
Type type = typeof(T);
PropertyInfo[] p = type.GetProperties();
while (reader.Read())
{
var model = Activator.CreateInstance<T>();
foreach (var item in p)
{
if (reader[item.Name] == System.DBNull.Value)
{
continue;
}
item.SetValue(model, reader[item.Name], null);
}
list.Add(model);
}
reader.Close();
return list;
}
}
}