通用创建对象(建立IdataReader与Class关系,同时将IdataReader数据赋给Class对象(原创)
通用创建对象(建立IdataReader与Class关系,同时将IdataReader数据赋给Class对象,不用每次访问数据都写一大堆代码...
/// <summary>
/// 通用创建对象(建立IdataReader与Class关系,同时将IdataReader数据赋给Class对象 作者:风云
/// </summary>
/// <typeparam name="T">类名</typeparam>
/// <remarks>要求:IdataRader中获取的字段名称和数据类型要与类中保持一致</remarks>
public class ConstructObject<T> where T : new()
{
/// <summary>
/// 将IDataReader数据填充至实体类的属性中当
/// </summary>
/// <param name="dr"></param>
/// <returns></returns>
public static T Construct(IDataReader dr)
{
//
//实例化对象
//
T o = new T();
//
//建立循环体,从0开始,到dr的字段总数
//
for (int i = 0; i < dr.FieldCount; i++)
{
//
//查找与IDataReader字段相对应的属性,如果不为空,表示有对应关系,赋值
//
PropertyInfo PI = (typeof(T)).GetProperty(dr.GetName(i), BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase);
if (PI != null && PI.CanWrite)
{
if (!dr.IsDBNull(i))
{
if (dr.GetValue(i).GetType().FullName == "System.String")
{
PI.SetValue(o, dr.GetValue(i).ToString().Trim(), null);
}
else
{
PI.SetValue(o, dr.GetValue(i), null);
}
}
}
}
return o;
}
}//闭合类
/// 通用创建对象(建立IdataReader与Class关系,同时将IdataReader数据赋给Class对象 作者:风云
/// </summary>
/// <typeparam name="T">类名</typeparam>
/// <remarks>要求:IdataRader中获取的字段名称和数据类型要与类中保持一致</remarks>
public class ConstructObject<T> where T : new()
{
/// <summary>
/// 将IDataReader数据填充至实体类的属性中当
/// </summary>
/// <param name="dr"></param>
/// <returns></returns>
public static T Construct(IDataReader dr)
{
//
//实例化对象
//
T o = new T();
//
//建立循环体,从0开始,到dr的字段总数
//
for (int i = 0; i < dr.FieldCount; i++)
{
//
//查找与IDataReader字段相对应的属性,如果不为空,表示有对应关系,赋值
//
PropertyInfo PI = (typeof(T)).GetProperty(dr.GetName(i), BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase);
if (PI != null && PI.CanWrite)
{
if (!dr.IsDBNull(i))
{
if (dr.GetValue(i).GetType().FullName == "System.String")
{
PI.SetValue(o, dr.GetValue(i).ToString().Trim(), null);
}
else
{
PI.SetValue(o, dr.GetValue(i), null);
}
}
}
}
return o;
}
}//闭合类
浙公网安备 33010602011771号