コード例 #1
0
        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
            }
        }
コード例 #2
0
        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));
            }
        }