public static void SetPropertyValueFromReaderAdapeter(DataReaderAdapeter dataReaderAdapeter, object obj) { if (dataReaderAdapeter == null) { throw new ArgumentNullException("row"); } if (obj == null) { throw new ArgumentNullException("item"); } if (dataReaderAdapeter.obj == null) { ClassDelegateInfo classDelegateInfo = new ClassDelegateInfo { ColumnNames = dataReaderAdapeter.GetColumnNames(), MeberOperationHelperContainer = obj.GetType().GetMeberOperationHelperContainer(true) }; dataReaderAdapeter.obj = classDelegateInfo; } SetPropertyValueFromReader(dataReaderAdapeter, obj, null); }
private static void SetPropertyValueFromReader(DataReaderAdapeter dataReaderAdapeter, object obj, string subItemPrefix) { Type type = obj.GetType(); ClassDelegateInfo classDelegateInfo = (ClassDelegateInfo) dataReaderAdapeter.obj; MeberOperationHelperContainer meberOperationHelperContainer = classDelegateInfo.MeberOperationHelperContainer; if (!(classDelegateInfo.MeberOperationHelperContainer.GetModelType() == type)) { classDelegateInfo.MeberOperationHelperContainer = type.GetMeberOperationHelperContainer(true); } foreach (KeyValuePair<string, MeberOperationHelper> pair in classDelegateInfo.MeberOperationHelperContainer.GetDict()) { if (!pair.Value.GetDbColumnAttribute().IgnoreLoad) { if (pair.Value.GetDbColumnAttribute().HasPrefix) { object obj2 = Activator.CreateInstance(pair.Value.GetPropertyType()); pair.Value.SetPropertyValue(obj, obj2); string str = null; if (string.IsNullOrEmpty(pair.Value.GetDbColumnAttribute().SubItemPrefix)) { str = subItemPrefix; } else if (pair.Value.GetDbColumnAttribute().SubItemPrefix == "*") { str = subItemPrefix + (pair.Key + "."); } else { str = subItemPrefix + pair.Value.GetDbColumnAttribute().SubItemPrefix; } SetPropertyValueFromReader(dataReaderAdapeter, obj2, str); classDelegateInfo.MeberOperationHelperContainer = meberOperationHelperContainer; } else { InnerSetPropertyValueFromReader(dataReaderAdapeter, obj, pair.Value, subItemPrefix); } } } }
private static bool InnerSetPropertyValueFromReader(DataReaderAdapeter dataReaderAdapeter, object obj, MeberOperationHelper meberOperationHelper, string string_0) { string[] array = ((ClassDelegateInfo) dataReaderAdapeter.obj).ColumnNames; string str = string_0 + meberOperationHelper.GetDbColumnAttribute().Alias; int num = array.FindIndex(str); if (num < 0) { return false; } object dbValue = dataReaderAdapeter.GetValue(num); return (DBNull.Value.Equals(dbValue) || meberOperationHelper.SetPropertyValue(obj, dbValue)); }