tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
511
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    fedora_core fedora_core ist offline Grünschnabel
    Registriert seit
    Feb 2004
    Beiträge
    1
    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!
     

  2. #2
    Avatar von Alexander Schuc
    Alexander Schuc Alexander Schuc ist offline admin | crazy-weasel
    tutorials.de Administrator
    Registriert seit
    Aug 2001
    Ort
    Österreich, Stmk, Graz
    Beiträge
    2.783
    Hallo.

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

    Das Zauberwort ist Reflection.

    Code :
    1
    
    using System.Reflection;

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

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

    Und nun wollen wir uns dynamisch eine Instanz erzeugen.

    Code :
    1
    2
    3
    4
    5
    6
    
    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
     
    With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
    Aaron Satie

    Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
    Captain Jean-Luc Picard, Stardate ~41294.5

    Tutorials.de chattet. Hier gibts auch .net Support ^^
    Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de

    (moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 17.01.11, 21:53
  2. Von einem String zu einem Objekt konvertieren
    Von Jens K im Forum Java Grundlagen
    Antworten: 4
    Letzter Beitrag: 30.06.08, 12:18
  3. string in einer Klasse deklarieren
    Von nitro23 im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 18.06.08, 14:21
  4. Antworten: 1
    Letzter Beitrag: 27.02.08, 10:15
  5. Antworten: 14
    Letzter Beitrag: 23.01.05, 17:47