zoukankan      html  css  js  c++  java
  • 利用反射将数据读入实体类

    反射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;
            }
  • 相关阅读:
    qt获取本机ip
    qt获取本机用户名
    QT获取主机名称
    关于代码控制管理的一些想法
    QLabel添加Click信号
    QT中,控件显示不下,用...表示
    qt获取屏幕
    Matlab boxplot for Multiple Groups(多组数据的箱线图)
    Linux Bash代码 利用for循环实现命令的多次执行
    DataProcessing
  • 原文地址:https://www.cnblogs.com/mmmhhhlll/p/1291300.html
Copyright © 2011-2022 走看看