簡體   English   中英

C#讓用戶創建類實例

[英]C# get user to create class instance

如果有一個類(例如“ Painter”),並且需要用戶能夠在運行時中創建此類的一個或多個實例,那么最好的方法是什么?

因此,每次用戶單擊按鈕時,我們需要一個新的painter對象嗎?

還是每當用戶輸入“新畫家”時,我們都需要一個新畫家實例?

您可以使用Type.GetTypestring獲取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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM