C# 掃描名稱空間,開啟對應名稱form
阿新 • • 發佈:2020-12-13
技術標籤:C#
C# 掃描名稱空間,開啟對應名稱form
string frmName = "FrmName"; Assembly assembly = Assembly.GetExecutingAssembly(); Type[] typeArr = assembly.GetTypes(); ConstructorInfo[] arr; foreach (Type t in typeArr) { //Console.WriteLine(t.FullName); // 非靜態 // 繼承自 "DevExpress.XtraEditors.XtraForm" 或者 "System.Windows.Forms" // 建構函式如果是私有呼叫GetInstance方法 if ( !t.Attributes.HasFlag(TypeAttributes.Abstract | TypeAttributes.Abstract) // 非靜態 && (t.BaseType.FullName == "DevExpress.XtraEditors.XtraForm" || t.BaseType.FullName == "System.Windows.Forms.Form") ) { arr = ((ConstructorInfo[])(t as TypeInfo).DeclaredConstructors); if (arr.Length != 0) { // 建構函式 if (arr[0].IsPrivate) { // 執行私有化構造方法 Console.WriteLine("\tPrivate " + t.FullName); if (t.Name == frmName) { //呼叫私有的建構函式,獲得例項化物件 Form frm = t.GetConstructors(BindingFlags.Instance | BindingFlags.NonPublic)[0].Invoke(null) as Form; frm.Show(); } } else { Console.WriteLine("\t" + t.FullName); if (t.Name == frmName) { Form frm = Activator.CreateInstance(t) as Form; frm.Show(); } } } } }