通过反射填充泛型集合List的静态方法

jxsrlsl1234

jxsrlsl1234

2016-02-19 20:13

下面,图老师小编带您去了解一下通过反射填充泛型集合List的静态方法,生活就是不断的发现新事物,get新技能~

  呃```花了一晚上时间,终于搞出来了如何通过反射,从DataReader将数据填充到数据实体泛型集合的静态方法.

   

  //Kchen.Core.BaseBusinessObject为通用数据实体类,此处仅为限定T所继承的类型
          public static IListT FillDataListGenericT(System.Data.IDataReader reader) where T : Kchen.Core.BaseBusinessObject
          {
              //实例化一个List泛型集合
              IListT DataList = new ListT();
              while (reader.Read())
              {
                  //由于是是未知的类型,所以必须通过Activator.CreateInstanceT()方法来依据T的类型动态创建数据实体对象
                  T RowInstance = Activator.CreateInstanceT();
                  //通过反射取得对象所有的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;
          }
  调用的时候使用如下代码

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)

              //伪代码 OleDbDataReader _ds = 创建一个OleDbDataReader
              IListProduct _result = Kchen.Utilities.FillDataListGenericProduct(_ds);

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)

  此静态方法通过一个实体类型和DateReader,快速的将数据填充到数据实体泛型集合中.

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

展开更多 50%)
分享

猜你喜欢

通过反射填充泛型集合List的静态方法

Web开发
通过反射填充泛型集合List的静态方法

到底是什么反射泛型委托泛型

编程语言 网络编程
到底是什么反射泛型委托泛型

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

用J2SE 5.0创建定制的泛型集合

编程语言 网络编程
用J2SE 5.0创建定制的泛型集合

Visual C#泛型学习之泛型介绍

编程语言 网络编程
Visual C#泛型学习之泛型介绍

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

通过序列化和反序列化泛型数据实体集合来实现持久化数据对象的方

Web开发
通过序列化和反序列化泛型数据实体集合来实现持久化数据对象的方

Java泛型编程快速入门

编程语言 网络编程
Java泛型编程快速入门

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

VC中利用MFC设计绘图程序初步

VC中利用MFC设计绘图程序初步

高手详解WinXP系统中可以被禁用的服务以及技巧

高手详解WinXP系统中可以被禁用的服务以及技巧
下拉加载更多内容 ↓