我想魔術會發生這樣的...
.net中是否可以通過類字符串名稱聲明變量,但沒有直接的類名?
class SomeClass {}
public static void main()
MagicFunctionOrMacrosOrSomethingThatGetTypeOf("SomeClass") some_var = null;<br />
}
也許是瘋狂的,但是這可能嗎?
我需要它來避免瘋狂的大型開關情況,因爲有很多類,但是在某些代碼點無法告訴要創建什麼類。
讓我們有一個例子:
我有基類:
類基類{}
有很多的子類:
類class1:基類{}
類class2:基類{}
...
類classn:基類{}
有一些來自外部的標誌到事件處理程序:
string class_name; //實際上我使用int標誌,它應該與字典中的字符串名稱相關聯。
已被迫做出這樣的:
switch(class_name)
case "class1":
class1 some_class = new class1();
some_class.RunHandler();
break;
case "class2":
class2 some_class = new class2();
some_class.RunHandler();
break;
case "classn":
classn some_class = new classn();
some_class.RunHandler();
break;
}
我想要的東西,以取代大switch語句是這樣的:
MagicFunctionOrMacrosOrSomethingThatGetTypeOf(class_name) some_var = null;
... some initialization actions with some_var
some_var.Build();
some_var.RunHandler();
哦,我...
我在這裏看到的這五個tag,但沒有接近被問什麼...... – Chandu 2012-02-05 16:07:48
對不起,但我不知道什麼標籤可以描述這種怪異的事情
但如果看到問題的話,所有的標籤適合問題 – Kosmos 2012-02-05 16:09:00
您必須用適合所有可能性的基本類型聲明該變量。在最壞的情況下,這是'對象'。它可能是「動態」的。你打算如何創建對象? – 2012-02-05 16:13:04