private void LoadInstanceList(object obj, List <MemberTypeInformation> listPrimaryKeyMembers, BindingFlags bindingFlags = BindingFlags.NonPublic | BindingFlags.Instance) { string strError = ""; // Loop Instance Fields foreach (FieldInfo fieldChildInstance in obj.InstanceFields(bindingFlags)) { #region Get Class Information // Get Cached Class Information Collection ClassTypeInformation classInfoInstance = CacheRepository.LoadTypeInformation(fieldChildInstance.CollectionFieldType(), bindingFlags); // Validation if (classInfoInstance == null || classInfoInstance.DataTable == null || classInfoInstance.CanBeHydrated == false) { return; } #endregion #region Filter Class DataTable // Create Data Filter string strFilter = String.Join(" AND ", listPrimaryKeyMembers.Select(pk => pk.ColumnName + "=" + classInfoInstance.DataTable.Rows[0][pk.ColumnName]).ToArray()); // Get DataRow DataRow drInstance = classInfoInstance.DataTable.Select(strFilter).First(); // Validation if (drInstance == null) { return; } #endregion #region Create Instance With Filtered DataTable // Create Instance object objNew = classInfoInstance.CreateInstance(fieldChildInstance.FieldType, drInstance, ref strError, bindingFlags); // Set Value fieldChildInstance.SetValue(obj, objNew); #endregion } }
public static T CreateInstance <T>(DataRow dr, ref string strError, BindingFlags bindingFlags = BindingFlags.NonPublic | BindingFlags.Instance) { try { // Get Cached Class Information Instance ClassTypeInformation classInfo = CacheRepository.ClassTypeList.Where(cls => cls.Type == typeof(T)).FirstOrDefault(); // Validation if (classInfo == null) { return(default(T)); } object obj = classInfo.CreateInstance(typeof(T), dr, ref strError, bindingFlags); return((T)obj); } catch (Exception ex) { strError = ex.ToString(); return(default(T)); } }