利用反射将数据读入实体类

反射DataReader赋值实体

 public static void ReaderToObject<T>(IDataReader reader, T targetObj)
        {
            
for (int i = 0; i < reader.FieldCount; i++)
            {
                System.Reflection.PropertyInfo propertyInfo 
= targetObj.GetType().GetProperty(reader.GetName(i));
                
if (propertyInfo != null)
                {
                    
if (reader.GetValue(i) != DBNull.Value)
                    {
                        propertyInfo.SetValue(targetObj, reader.GetValue(i).ToString(), 
null);
                    }
                }
            }
        }

        
public static void ReaderToObjects<T>(IDataReader reader, System.Collections.Generic.List<T> targetObjs)
        {
            
while (reader.Read())
            {
                T targetObj 
= System.Activator.CreateInstance<T>();
                ReaderToObject(reader, targetObj);
                targetObjs.Add(targetObj);
            }
        } 

调用:

        /// <summary>
        
/// 得到数据表fav_bookmark所有记录
        
/// </summary>
        
/// <returns>数据集</returns>
        public BookMarkEntityCollection GetPagedBookMark(UserEntity userEntity, int startIndex, int endindex)
        {
            BookMarkEntityCollection list 
= new BookMarkEntityCollection();

             SqlParameter[] _param 
={            
             
new SqlParameter("@startIndex", startIndex),
            
new SqlParameter("@endIndex", endindex)
                                    };
            
using (SqlDataReader dr = SqlHelper.ExecuteReader(SysConfig.ConnectionString,CommandType.StoredProcedure, "pfav_GetPagedbookmark",_param))
            {
                BookMarkEntity obj 
= new BookMarkEntity();
                MPortal.Utility.ReflectionEntity.ReaderToObjects
<BookMarkEntity>(dr, list);               
            }
            
return list;
        }
原文地址:https://www.cnblogs.com/mmmhhhlll/p/1291300.html