簡體   English   中英

C#如何使用字符串聲明類型

[英]C# How to use a string to declare a type

可以在C#中使用字符串聲明類型嗎?

代替:

MyType foo = bar;

您將有一個字符串“ MyType”。

string typeString  = "MyType";
TypeOftypeString foo = bar;

顯然,我不知道執行此操作的正確方法。 因此,以上示例只是表達我所想的一種方式。

在Unity3D中,我可以在運行時之前將字符串設置為特定值。 我可以使用該字符串定義類型嗎? 即使這最終成為我的代碼中不合邏輯的追求,這可能嗎? 如果是這樣,您將如何處理?

編輯:擴大我的話。 MyType是應用程序中的類。 我也有MyOtherType和MyDifferantType。 我希望該字符串可以是“ MyType”或“ MyOtherType”,然后將該對象的已創建實例分配給該字段。 我試圖避免一個很長的if-else chain或switch()語句,在該語句中我為對象可能遇到的每種類型提供了一個理由,即使該類型是在運行時之前設置字符串時預先確定的。

如果這看起來像是一個傻瓜差事,請告訴我。

這應該是一個解決方案:

var yourType= "yourType";
var theType = TheType.GetType(yourType, true);
var variable = (yourTypeCast)Activator.CreateInstance(yourType);

如果我理解正確,則想基於字符串中的名稱實例化一個類。 這是執行此操作的一種方法。

var typeName = "someType";
var type = Type.GetType(typeName, true);
var instanceOfType = (someInterfaceCast)Activator.CreateInstance(type); //I like to use an interface cast here

更新:像提到的一些評論一樣,如果您可以避免使用此路徑,則最好這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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