如果有一個像'Painter'這樣的類,並且需要用戶能夠創建這個類@ runtime的實例或實例,那麼最好的方法是什麼?C#獲取用戶創建類實例
所以每次用戶點擊一個按鈕,我們需要一個新的畫家對象?
或每次用戶輸入'新的畫家',我們需要一個新的畫家實例?
如果有一個像'Painter'這樣的類,並且需要用戶能夠創建這個類@ runtime的實例或實例,那麼最好的方法是什麼?C#獲取用戶創建類實例
所以每次用戶點擊一個按鈕,我們需要一個新的畫家對象?
或每次用戶輸入'新的畫家',我們需要一個新的畫家實例?
可以使用Type.GetType
得到一個string
一個Type
。
一旦你得到了Type
對象,你可以調用Activator.CreateInstance
來實例化它,或者調用Type.GetConstructors
,選擇一個合適的構造函數然後調用它。
兩個「陷阱」關於Type.GetType
,順便說一句:
mscorlib
,你需要指定命名空間集名稱以及與版本信息,如果它的強命名如果你有問題的程序集的引用,然後Assembly.GetType
可以是一個更簡單的方法 - 但仍需要包含名稱空間。
「版本信息如果是強類型的」應該是「版本信息,如果它強烈地命名爲」 – 2009-12-11 09:06:47
@AZ:謝謝,現在修復。 – 2009-12-11 09:24:26
我猜你的問題的要點是在用戶輸入之前,類的類型是未知的。否則,如果你想在每個按鈕點擊一個新的Painter類,你可以簡單地處理按鈕點擊並執行「var newpainter = new Painter();
」。
因此,假設您需要動態創建未知類型的實例,則可以使用反射在運行時執行此操作。
var newpainter = Activator.CreateInstance(Type.GetType("Painter"), args);
所有對象實例都是在運行時通過調用類型構造函數來創建的。你需要詳細說明你的問題。你是否試圖讓用戶輸入將被動態評估的C#代碼? – 2009-12-11 08:50:29