Exemplo n.º 1
0
        /// <summary>
        /// 생성자 리스트 셋팅
        /// </summary>
        private void SetConstructorList()
        {
            string   classFullName = lueClass.EditValue.ToString();
            Type     classType;
            Assembly assem;

            txtClassName.Text = classFullName;

            if (!_assemblyHandler.GetAssemblyType(out assem))
            {
                return;
            }

            // Assembly 안에 Class 를 추출함
            try
            {
                classType = assem.GetType(classFullName);
            }
            catch (Exception ex)
            {
                ErrorTraceForm form = new ErrorTraceForm(ex, System.Reflection.MethodBase.GetCurrentMethod());
                form.ShowDialog();
                return;
            }

            // 추출한 클래스를 Tag에 담음
            _assemblyHandler.SelectionType = classType;

            // 기존 항목 초기화
            _dtConstruct.Clear();

            // 생성자 리스트 셋팅
            foreach (ConstructorInfo constructorInfo in classType.GetConstructors())
            {
                StringBuilder param       = new StringBuilder();
                string        paramString = string.Empty;

                // 파라미터 셋팅
                foreach (ParameterInfo parameterInfo in constructorInfo.GetParameters())
                {
                    if (parameterInfo.Position != 0)
                    {
                        param.Append("|");
                    }
                    param.AppendFormat("{0} ({1})", parameterInfo.Name, parameterInfo.ParameterType.Name);
                }

                if (param.ToString().Length == 0)
                {
                    paramString = "(기본 빈 생성자)";
                }
                else
                {
                    paramString = param.ToString();
                }

                _dtConstruct.Rows.Add(new object[] { constructorInfo.ToString(), paramString, constructorInfo });
            }

            // 최초 빈값 셋팅
            lueConstruct.ItemIndex = 0;
        }