cnlan

导航

通用创建对象(建立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;
        }

    }
//闭合类

 

 

posted on 2010-01-22 16:30  小菜猪  阅读(405)  评论(0)    收藏  举报