[英]C# get user to create class instance
如果有一個類(例如“ Painter”),並且需要用戶能夠在運行時中創建此類的一個或多個實例,那么最好的方法是什么?
因此,每次用戶單擊按鈕時,我們需要一個新的painter對象嗎?
還是每當用戶輸入“新畫家”時,我們都需要一個新畫家實例?
您可以使用Type.GetType
從string
獲取Type
。
獲得Type
對象后,可以調用Activator.CreateInstance
實例化它,或調用Type.GetConstructors
,選擇一個合適的構造函數然后調用它。
順便說一下,有關Type.GetType
兩個“陷阱”:
mscorlib
,否則如果您將程序集名稱指定為強名稱,則還需要指定程序集名稱以及版本信息 如果您引用的是相關程序集,那么Assembly.GetType
可能是一種更簡單的方法-但是您仍然需要包括名稱空間。
我想您要問的要點是,在用戶輸入之前,類類型是未知的。 否則,如果您希望在每次按鈕單擊時創建一個新的Painter類,則只需處理按鈕單擊並執行“ var newpainter = new Painter();
”。
因此,假設您需要動態創建未知類型的實例,則可以在運行時使用反射來執行此操作。
var newpainter = Activator.CreateInstance(Type.GetType("Painter"), args);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.