反射填充泛型集合List方法

分类: asp.net   出处:iocblog整理  更新时间:2009-04-18   添加到收藏  

  从datareader将数据填充到数据实体泛型集合的静态方法。

  //kchen.core.basebusinessobject为通用数据实体类,此处仅为限定t所继承的类型

  public static ilist filldatalistgeneric(system.data.idatareader reader) where t : kchen.core.basebusinessobject

  {

  //实例化一个list<>泛型集合

  ilist datalist = new list();

  while (reader.read())

  {

  //由于是是未知的类型,所以必须通过activator.createinstance()方法来依据t的类型动态创建数据实体对象

  t rowinstance = activator.createinstance();

  //通过反射取得对象所有的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);

  }(来源www.iocblog.net)

  }

  catch

  {

  break;

  }

  }

  }

[1] [2] 下一页


Tag: DataReader



文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。