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

首頁 > 開發 > 綜合 > 正文

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

2024-07-21 02:28:32
字體:
來源:轉載
供稿:網友

呃```花了一晚上時間,終于搞出來了如何通過反射,從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,快速的將數據填充到數據實體泛型集合中.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 龙胜| 从江县| 饶河县| 泰州市| 亳州市| 西乌珠穆沁旗| 长顺县| 重庆市| 兰西县| 星子县| 栖霞市| 三都| 辽宁省| 方正县| 邯郸市| 江华| 宜章县| 当涂县| 通辽市| 赤水市| 滁州市| 和平区| 花莲市| 桃江县| 凯里市| 曲周县| 杭锦后旗| 上犹县| 赣州市| 巴彦县| 清原| 盐源县| 钦州市| 广昌县| 南汇区| 阿克苏市| 茌平县| 上虞市| 永丰县| 孙吴县| 青河县|