Entwickler-Ecke

Basistechnologien - Klasse zur Laufzeit bestimmen und erstellen


CASS - Di 12.06.07 09:20
Titel: Klasse zur Laufzeit bestimmen und erstellen
Hallo Leute,

ich suche eine Möglichkeit, eine Klasse zur Laufzeit zu bestimmen und dann zu erstellen. Soll dann so laufen das ich im Programme einen String habe, aufgrund dessen möchte ich dann die Klasse mit dem Namen des Strings erstellen. Hat jemand ne Idee wie sowas funktionieren könnte?

Grüße Cass


Christian S. - Di 12.06.07 09:51

Hallo!

Du musst zuerst einmal wissen, in welchem Assembly diese Klasse liegt. Der Einfachheit halber gehen wir davon aus, dass Deine Anwendung nur aus einer Assembly besteht.

C#-Quelltext
1:
Assembly theAsm = Assembly.GetCallingAssembly();                    

Es gibt noch andere Methoden für andere Situationen, einfach mal in der Hilfe stöbern

Dann musst Du Dir den Typ der Klasse besorgen. Wenn Du den Namen der Klasse hast, geht das so:

C#-Quelltext
1:
Type myClassType = theAsm.GetType(myClassName);                    

Schau Dir aber mal die Überladungen von GetType() an, um ein paar andere Möglichkeiten zu sehen, wie man den Type bekommen kann.

Jetzt noch eine Instanz erzeugen:

C#-Quelltext
1:
IMyInterface myInstance = (IMyInterface )Activator.CreateInstance(myClassType);                    


Ich bin dabei davon ausgegangen, dass alle Klassen, die hierfür in Frage kommen, ein gemeinsames Interface implementieren und man das Object, welches der Activator zurückgibt, darein casten kann. Dann wird die Benutzung der erzeugten Instanz viel einfacher. Ansonsten musst Du über Reflection jeweils Methoden und Eigenschaften ermitteln.

Grüße
Christian


CASS - Di 12.06.07 23:29

Danke Christian,

nach dem hinzufügen der nötigen using direktive (System.Reflection) hat alles wunderbar funktioniert.

Danke und viele Grüße!
Cass