Announcement

Collapse
No announcement yet.

Komponente dynamisch erzeugen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Komponente dynamisch erzeugen

    Ich habe ein Problem, dass ich schon einmal gelöst habe. Leider habe ich die Lösung verlegt.

    Wie kann ich zur Laufzeit eine Komponente erzeugen, deren Typ nur als String vorliegt?

    z.B. Ich lese aus einer Datenbank den String
    Button aus, und möchte nun die Komponente Button als Button1 erzeugen.

    Komponente(aus String) Test = new Komponente(aus String)();

    Wie gesagt, die Komponente ist hier der flexible Teil. Ich hoffe, dass ich mich verständlich ausgedrückt habe :-))

    Danke.

  • #2
    Hi Michael,

    versuchs mal mit folgendem Code:
    <pre>
    Type t = Type.GetType("System....IrgendeinObject");
    ConstrcutorInfo c = t.GetConstructor(new Type[0] {}); <i>// Konstruktor ohne Parameter finden</i>
    DeineKlasse k = (DeineKlasse)c.Invoke(new Object[0] {}); <i>// Keinen Parameter übergeben</i>
    </pre>
    Ist mal eben aus dem Gedächtnis - habs daher nichts ausprobieren können.

    Schönen Gruß

    Jör

    Comment


    • #3
      Hallo Jörg,

      danke für Deine prompte Antwort. Trotzdem komme ich nicht weiter (viellicht die Hitze).

      Also gerade Deine letzte Zeile (DeineKlasse k) ist ja für mich unbekannt. Die Klasse bekomme ich aus dem String. Bekannt wäre für mich nur der Namespace.

      Vielleicht fällt Dir ja noch was ein :-).

      Danke!

      Comment


      • #4
        Vielleicht so?

        Type t = Type.GetTyp("System....IrgendeinObject");
        ConstrcutorInfo c = t.GetConstructor(new Type[0] {});
        Control k = (Control)c.Invoke(new Object[0] {});
        Controls.Add(k);

        Das geht dann für alle Klassen die von System.Windows.Forms.Control erben, wie zb. dem WinForms Button ... für Asp.NET geht das ganze analog.

        Oder das ganze etwas kürzer:

        Controls.Add((Control)Activator.CreateInstance(Typ e.GetTyp("System....IrgendeinObject")))

        Comment

        Working...
        X