国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

通過反射填充泛型集合List的靜態方法

2019-11-18 16:54:19
字體:
來源:轉載
供稿:網友

呃```花了一晚上時間,終于搞出來了如何通過反射,從DataReader將數據填充到數據實體泛型集合的靜態方法.

 

//Kchen.Core.BaseBusinessObject為通用數據實體類,此處僅為限定T所繼承的類型
        public static IList<T> FillDataListGeneric<T>(System.Data.IDataReader reader) where T : Kchen.Core.BaseBusinessObject
        {
            //實例化一個List<>泛型集合
            IList<T> DataList = new List<T>();
            while (reader.Read())
            {
                //由于是是未知的類型,所以必須通過Activator.CreateInstance<T>()方法來依據T的類型動態創建數據實體對象
                T RowInstance = Activator.CreateInstance<T>();
                //通過反射取得對象所有的PRoperty
                foreach (PropertyInfo Property in typeof(T).GetProperties())
                {
                    //BindingFieldAttribute為自定義的Attribute,用于與數據庫字段進行綁定
                    foreach (BindingFieldAttribute FieldAttr in Property.GetCustomAttributes(typeof(BindingFieldAttribute), true))
                    {
                        try
                        {
                            //取得當前數據庫字段的順序
                            int Ordinal = reader.GetOrdinal(FieldAttr.FieldName);
                            if (reader.GetValue(Ordinal) != DBNull.Value)
                            {
                                //將DataReader讀取出來的數據填充到對象實體的屬性里
                                Property.SetValue(RowInstance, Convert.ChangeType(reader.GetValue(Ordinal), Property.PropertyType), null);
                            }
                        }
                        catch
                        {
                            break;
                        }
                    }
                }
                //將數據實體對象add到泛型集合中
                DataList.Add(RowInstance);
            }
            return DataList;
        }
調用的時候使用如下代碼

            //偽代碼 OleDbDataReader _ds = 創建一個OleDbDataReader
            IList<Product> _result = Kchen.Utilities.FillDataListGeneric<Product>(_ds);

此靜態方法通過一個實體類型和DateReader,快速的將數據填充到數據實體泛型集合中.

http://www.survivalescaperooms.com/kchen/archive/2006/10/31/545011.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 华蓥市| 大姚县| 鄂州市| 抚松县| 邵东县| 凤阳县| 屯门区| 团风县| 建湖县| 昆明市| 加查县| 五大连池市| 冕宁县| 册亨县| 昭通市| 丹巴县| 九龙县| 兴化市| 肥乡县| 威远县| 锦屏县| 珲春市| 侯马市| 攀枝花市| 长海县| 博湖县| 招远市| 台山市| 都兰县| 南雄市| 临夏县| 巍山| 江门市| 亳州市| 临海市| 嘉善县| 若尔盖县| 满城县| 绥棱县| 烟台市| 竹山县|