泛型方法--获取业务实体和业务实体列表
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;
}
}
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;
}
}
相关文章推荐
- 巴巴运动网学习笔记三之产品分类实体对象基本属性的JPA映射,用泛型技术对产品分类的业务管理Bean抽象,单元测试产品分类的业务管理Bean.,重载业务管理Bean的删除方法,
- java 利用反射机制,获取实体所有属性和方法,并对属性赋值
- C#内获取泛型方法及扩展
- C#内获取泛型方法及扩展
- C++获取zip文件列表方法
- python获取指定目录下所有文件名列表的方法
- Runtime获取类属性列表和方法列表
- java 利用反射机制,获取实体所有属性和方法,并对属性赋值
- jquery获取下拉列表的值为null的解决方法
- java 利用反射机制,获取实体所有属性和方法,并对属性赋值
- runtime实际应用(1)- 获取对象属性及方法列表
- ASP.NET通过反射获取泛型列表,从而节省代码量
- 应用程序分别从SSRS2005和SSRS2008获取报表列表的方法差异
- 利用反射获取实体所有属性和方法
- JQERY对单、复选下拉列表的的值和ID的获取方法
- PHP获取自然周列表,周开始结束日期,月开始结束时间方法类
- Gson通过借助TypeToken获取泛型参数的类型的方法(转)
- java 利用反射机制,获取实体所有属性和方法,并对属性赋值
- 黑马程序员--Java基础加强--14.利用反射操作泛型III【解析关于泛型类型的细节信息的获取方法】【Method与泛型相关的方法】【个人总结】
- 利用反射,泛型,静态方法快速获取表单值到Model(转)