您的位置:首页 > 其它

泛型方法--获取业务实体和业务实体列表

2009-04-08 13:09 113 查看
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Reflection;

public class ModelFactory
{
/// <summary>
/// 获取指定类型的模型
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="reader"></param>
/// <returns></returns>
public static T GetModel<T>(SqlDataReader reader)
{
Type t=typeof(T);
T item = (T)Assembly.GetAssembly(t).CreateInstance(t.FullName);
using (reader)
{
if (reader.Read())
{
for (int i = 0; i < reader.FieldCount; i++)
{
string fieldName = reader.GetName(i).ToLower();
if (reader[i] != DBNull.Value)
{
foreach (PropertyInfo pi in t.GetProperties())
{
if (pi.Name.ToLower().Equals(fieldName))
{
pi.SetValue(item,reader[fieldName],null);
break;
}
}
}
}
}
}
return item;
}

/// <summary>
/// 获取指定类型对象的列表
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="reader"></param>
/// <returns></returns>
public static List<T> GetList<T>(SqlDataReader reader)
{
List<T> list = new List<T>();
Type t=typeof(T);
using (reader)
{
while (reader.Read())
{
T item = (T)Assembly.GetAssembly(t).CreateInstance(t.FullName);
for (int i = 0; i < reader.FieldCount; i++)
{
string fieldName = reader.GetName(i).ToLower();
if (reader[i] != DBNull.Value)
{
foreach (PropertyInfo pi in t.GetProperties())
{
pi.SetValue(item,reader[fieldName],null);
break;
}
}
}
list.Add(item);
}
}
return list;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐