C#反射靜態(tài)方法開發(fā)實例詳解
作者:kchen
如何通過使用C#反射靜態(tài)方法開發(fā)來填充泛型集合List呢?從DataReader將數(shù)據填充到數(shù)據實體泛型集合的C#反射靜態(tài)方法開發(fā)是如何實現(xiàn)的呢?本文向你介紹詳細的內容。
C#反射靜態(tài)方法開發(fā)在實際的開發(fā)中起著很重要的作用,如何通過反射填充泛型集合List的靜態(tài)方法呢?就是如何通過反射,從DataReader將數(shù)據填充到數(shù)據實體泛型集合的靜態(tài)方法.那么我們來看看具體的實現(xiàn)方法:
C#反射靜態(tài)方法開發(fā)實例:
- //Kchen.Core.BaseBusinessObject
- //為通用數(shù)據實體類,此處僅為限定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ài)創(chuàng)建數(shù)據實體對象 - T RowInstance = Activator.CreateInstance
(); - //通過反射取得對象所有的Property
- foreach (PropertyInfo Property in typeof(T).GetProperties())
- {
- //BindingFieldAttribute為自定義的Attribute,用于與數(shù)據庫字段進行綁定
- foreach (BindingFieldAttribute
- FieldAttr in Property.GetCustomAttributes(
- typeof(BindingFieldAttribute), true))
- {
- try
- {
- //取得當前數(shù)據庫字段的順序
- int Ordinal = reader.GetOrdinal(FieldAttr.FieldName);
- if (reader.GetValue(Ordinal) != DBNull.Value)
- {
- //將DataReader讀取出來的數(shù)據填充到對象實體的屬性里
- Property.SetValue(RowInstance,
- Convert.ChangeType(reader.GetValue(Ordinal),
- Property.PropertyType), null);
- }
- }
- catch
- {
- break;
- }
- }
- }
- //將數(shù)據實體對象add到泛型集合中
- DataList.Add(RowInstance);
- }
- return DataList;
- }
調用的時候使用如下代碼
- //偽代碼 OleDbDataReader _ds = 創(chuàng)建一個OleDbDataReader
- IList
_result = - Kchen.Utilities.FillDataListGeneric
(_ds);
此C#反射靜態(tài)方法開發(fā)通過一個實體類型和DateReader,快速的將數(shù)據填充到數(shù)據實體泛型集合中.
C#反射靜態(tài)方法開發(fā)實例應用內容就向你介紹到這里,希望對你了解和學習C#反射靜態(tài)方法開發(fā)有所幫助。
【編輯推薦】
責任編輯:仲衡
來源:
cnblogs