Von einem String zu einer Klasse konvertieren

fedora_core

Grünschnabel
hallo leute!

In meinem C#-Programm lese ich ein Xml-File ein und parse es mit dem Dom-Parser. Das enstandene Dokument arbeite ich Knoten fuer Knoten ab. Bei jedem Knoten soll eine Instanz einer passenden Klasse aufgerufen werden, das heisst beim Knoten "<button ...>" soll eine Instanz der Button-Klasse aufgerufen werden. Das ganze soll aber dynamisch sein, das heisst ich weiss vorher nicht, welche Knoten im Xml-File stehen. Die Element-Klassen stehen in dynamisch eingebundenen Bibliotheken.

Nun zu meinem Problem:
Wie kann ich aus dem String "button" zu einer Klasse Button kommen? Gibt es in C# sowas wie dynamische Variablen wie in php? Da alles dynamisch sein soll, muss man aus dem String die jeweilige Klasse bilden koennen. Geht sowas in C#

Vielen Dank im Voraus!
 
Hallo.

Konvertieren finde ich ist das falsche Wort. Willst ja ein Objekt haben, also Instanzieren. ;)

Das Zauberwort ist Reflection.

Code:
using System.Reflection;

Zuerst holen wir uns das Assembly in der die Klasse ist. Sagen wir einen Button aus System.Windows.Forms

Code:
Assembly asm = Assembly.LoadWithPartialName("System.Windows.Forms");

Und nun wollen wir uns dynamisch eine Instanz erzeugen.

Code:
string namespace = "System.Windows.Forms.";
string klasse = "Button";
string fullname = namespace + klasse;

// object control = (object) asm.CreateInstance(fullname);
Control control = (Control) asm.CreateInstance(fullname);

Nun hast du dein Objekt. In dem Beispiel wussten wir ja das es sicherlich ein Control sein wird, deswegen hab ich es gleich als Control-Objekt behandelt.


Ich hoffe es hilft.

Mfg,
Alex
 

Neue Beiträge

Zurück