2010-02-01 55 views
0

我有一個定製的DDL,它位於我的服務器控件庫中。使用表中的控件名稱動態選擇和構建控件庫中的控件

目前,我通過強制鍵入控件的名稱(通常的方式)將此控件添加到表中。

Control_Library.Report_NumberDDL newDDL = new Control_Library.Report_NumberDDL(); 

我想要做的就是通過從表格中拉出控件名稱來動態創建該控件。

所以我會在我的代碼中的控件的名稱,在這種情況下「Report_NumberDDL」,然後我想創建控件,而不必強制鍵入它。

這樣的事情,雖然我知道這並不工作:

string controlName = "Report_NumberDDL"; 

Control_Library."controlName" controlNum1 = new Control_Library."controlName"(); 

SO因爲這顯然是行不通的有人可以幫我什麼工作?

感謝

編輯:

我試着這樣做:

Type type = Type.GetType("Control_Library.Report_NumberDDL"); 
    object control = Activator.CreateInstance(type); 

但在的CreateInstance(類型)我得到一個空值異常。所以Type沒有正確創建。

回答

0

您需要使用反射動態實例化對象。導入System.Reflection命名空間,然後做這樣的事情:

Type type = Type.GetType(ControlName); 
object control = Activator.CreateInstance(type); 
+0

好吧,我想通過這個工作,但這裏有一個問題,就是我所做的: 類型類型= Type.GetType(「One_Eva_Control_Library。 Emu_AIR_Report_NumberDDL「); object control = Activator.CreateInstance(type); 現在我得到一個空類型的異常,所以我不知道我在那裏做錯了什麼。 – 2010-02-01 17:50:23

+0

確保您的One_Eva_Control_Library程序集已加載並可用。然後嘗試Type type = Type.GetType(「Emu_AIR_Report_NumberDDL」); – Don 2010-02-01 17:55:24

+0

當你說加載和可用這是否意味着添加'使用One_Eva_Control_Library;'我的aspx.cs文件?或者還有其他需要確保裝配已裝入和可用的東西。 – 2010-02-01 18:02:12