2016-07-08 17 views
0

我搜索的網站,我需要一個答案上的聲明中使用它,而不是類型,但我無法找到它...C#代替TYPE到一個變量中,並在新的變數

我有這樣的:

string sNameOfClass="BusNode"; 

而且該類已經存在,並且有它自己的屬性。

現在我需要做這樣的事情,但我不知道如何...

sNameOfClass variable1 = new sNameOfClass() 

並在程序中使用varible1着作爲一個正常的變量...

所以像

coorinateClass cs = new ks(); 
cs.a=11; 
cs.b=33; 
cs.c=55; 

任何線索?

預先感謝您

+4

爲什麼你認爲你需要這樣做?你想解決什麼*實際問題? –

+0

你需要把實際的代碼在問題中,與實際的代碼格式.... –

+1

好像他有一個字符串中的類型名稱,並希望創建該類型的類的實例 –

回答

0
string sNameOfClass="BusNode"; 

switch (sNameOfClass) 
{ 
case "BusNode": 
     BusNode variable1 = new BusNode() 
     break; 
case "...." 
     break; 
} 
+0

這不會工作,我有很多課...我需要一個更好的方式... – Stefan

+0

上面的代碼是有用的少數類....請檢查一次「CreateInstance與新」 http:// stackoverflow.com/questions/1649066/activator-createinstancet-vs-new – andy

1

如果您需要管理其名稱的類,你可以使用這個:

//your class name 
string sNameOfClass = "YourNameSpace.BusNode"; 
//create type class from your class name 
Type T = Type.GetType(sNameOfClass); 
//create new instance of class 
var NewInstanse = Activator.CreateInstance(T); 
//set property 
T.GetProperty("a").SetValue(NewInstanse, 11); 
//get value of property 
var a = T.GetProperty("a").GetValue(NewInstanse); 
+0

讓我試試....似乎可以工作;) – Stefan

+0

是的,它會工作:) – andy

+0

在mscorlib中發生未處理的類型'System.ArgumentNullException'異常.dll 附加信息:值不能爲空。 ----錯誤在線var NewInstanse = Activator.CreateInstance(T); – Stefan