C#反射静态方法开发在实际的开发中起着很重要的作用,如何通过反射填充泛型集合List的静态方法呢?就是如何通过反射,从DataReader将数据填充到数据实体泛型集合的静态方法.那么我们来看看具体的实现方法:
C#反射静态方法开发实例:
- //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);
- }
- }
- catch
- {
- break;
- }
- }
- }
- //将数据实体对象add到泛型集合中
- DataList.Add(RowInstance);
- }
- return DataList;
- }
调用的时候使用如下代码
- //伪代码 OleDbDataReader _ds = 创建一个OleDbDataReader
- IList
_result = - Kchen.Utilities.FillDataListGeneric
(_ds);
此C#反射静态方法开发通过一个实体类型和DateReader,快速的将数据填充到数据实体泛型集合中.
C#反射静态方法开发实例应用内容就向你介绍到这里,希望对你了解和学习C#反射静态方法开发有所帮助。
【编辑推荐】