2016-07-08 9 views
0

ich auf der Seite nach einer Antwort gesucht, die ich brauchte, aber ich konnte es nicht finden ...C# Platz ein TYPE in eine Variable und verwendet sie anstelle von Typ bei der Deklaration neuer Variablen

Ich habe diese:

string sNameOfClass="BusNode"; 

Und die Klasse existiert bereits und hat ihre eigenen Eigenschaften.

Jetzt brauche ich, so etwas zu tun, aber ich weiß nicht, wie ...

sNameOfClass variable1 = new sNameOfClass() 

und verwenden varible1 vorwärts in Programm als normale Variable ...

so wie

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

Irgendwelche Hinweise?

Vielen Dank im Voraus

+4

Warum denken Sie, dass Sie das tun müssen? Was * aktuelles Problem * versuchst du zu lösen? –

+0

Sie müssen tatsächlichen Code in die Frage einfügen, mit der tatsächlichen Code-Formatierung .... –

+1

scheint wie er einen Typnamen in einer Zeichenfolge hat und will eine Instanz der Klasse den Typ bezieht sich auf –

Antwort

0
string sNameOfClass="BusNode"; 

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

das wird nicht funktionieren, ich habe viele Klassen ... Ich brauche einen besseren Weg ... – Stefan

+0

Der obige Code ist nützlich für eine kleine Anzahl von Klassen .... Bitte einmal "CreateInstance vs neue" http: // stackoverflow.com/questions/1649066/activator-creatinstancet-vs-new – andy

1

Wenn Sie eine Klasse mit seinem Namen verwalten müssen Sie diese verwenden können:

//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

lassen Sie mich versuchen .... scheint, könnte es funktionieren;) – Stefan

+0

Ja, es wird funktionieren :) – andy

+0

Eine nicht behandelte Ausnahme vom Typ 'System.ArgumentNullException' in mscorlib aufgetreten .dll Zusätzliche Informationen: Der Wert darf nicht null sein. ---- Fehler bei Zeile var NewInstanse = Activator.CreateInstance (T); – Stefan