Ich möchte ein neues Formular erzeugen, weiß aber erst zur Laufzeit welches.
Ich könnte natürlich über eine Fallunterscheidung die verschiedenen Möglichkeiten abfangen:
if( sFormular=="Formular1" ) then Formular1 frm = new Formular1();
if( sFormular=="Formular2" ) then Formular2 frm = new Formular2();
...
Aber gibt es da nicht eine Möglichkeit eine Klasse über einen String zu referenzieren, also etwas der Art
ConvertToClass("MyClass") myObject = new ConvertToClass("MyClass")
Betreff |
Von |
Datum |
|
|
Re: Objekte dynamisch erzeugen
Hallo Guest,<br><br>schau Dir mal die klasse <br>System.Activator<br>and<br>den Type kannst Du Dir über<br>typeof(Formular1)<br>oder<br>System.Type.GetType("Formular1")<br>holen<br><br>Gruß<br>Ansgar Sommer |
|
|
|
|
|
Ansgar
Sommer
|
06.06.2005 22:18 |
|
|
Re: Objekte dynamisch erzeugen
Hallo Ansgar,<br><br>Danke für die Hilfe. Mit<br><br>object o = Activator.CreateInstance( type );<br><br>kann ich mir dynamisch ein Objekt erzeugen. Aber wie kann ich es in den Typ umwandeln, damit ich auf die... |
|
|
|
|
|
G.
Guest
|
07.06.2005 12:03 |
|
|
Re: Objekte dynamisch erzeugen
Hallo Bernd,<br><br>dafür kannst Du ganz einfach einen TypeCast verwenden<br><br>System.Windows.Form frm;<br>frm = new Activator.CreateInstance( type ) as System.Windows.Form;<br><br>Du solltest das ganze aber... |
|
|
|
|
|
Ansgar
Sommer
|
07.06.2005 13:00 |
|
|
Re: Objekte dynamisch erzeugen
Wenn ich den Typ in System.Windows.Form umwandeln will geht das. Ebenso in jeden anderen Typ, den ich zum Entwicklungszeitpunkt kenne. Das Problem ist aber, daß ich das Objekt in den Typ type... |
|
|
|
|
|
G.
Guest
|
07.06.2005 13:17 |
|
|
Re: Objekte dynamisch erzeugen
Hallo Bernd,<br><br>ich gehe mal davon aus das Du das "nur" brauchst weil Du auf bestimmte Methoden oder Properies zu greifen möchtest.<br>Das lässt sich leider nur über Interfaces oder abstract classes... |
|
|
|
|
|
Ansgar
Sommer
|
07.06.2005 14:52 |
|
|
Re: Objekte dynamisch erzeugen
Hi,<br>die Frage ist, wenn Du den Typ nicht kennst, woher weißt Du, welche Methode es gibt.<br>Ein Interface in die Klassen zu implementieren wäre das beste (wie Ansgar vorschlägt)<br>Wenn das nicht geht,... |
|
|
|
|
|
Klaas
Wedemeyer
|
08.06.2005 13:05 |
|
|
Re: Objekte dynamisch erzeugen
Hallo,<br><br>ich habe das ganze jetzt mit einem Interface realisiert und es klappt prima. <br>Damit kann ich nun zur Laufzeit alle Formulare, die in einer Assembly implementiert sind, auslesen und mir die... |
|
|
|
|
|
G.
Guest
|
09.06.2005 09:14 |
|
|
Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!