国产探花免费观看_亚洲丰满少妇自慰呻吟_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,快速的將數據填充到數據實體泛型集合中.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 怀宁县| 兴义市| 新平| 错那县| 乌拉特中旗| 凉山| 云安县| 囊谦县| 密云县| 仙居县| 莱阳市| 富锦市| 朝阳区| 乡城县| 瑞昌市| 长白| 紫金县| 读书| 贵州省| 新巴尔虎左旗| 岚皋县| 靖远县| 六安市| 井研县| 黄骅市| 仪征市| 瑞安市| 红桥区| 阿坝| 盐源县| 柳江县| 阿城市| 馆陶县| 钟山县| 建德市| 武宁县| 同江市| 阿克苏市| 定南县| 定兴县| 镶黄旗|