Laden...

Objekt dynamisch aus string erstellen

Erstellt von HolgerBremen vor 14 Jahren Letzter Beitrag vor 14 Jahren 3.469 Views
H
HolgerBremen Themenstarter:in
38 Beiträge seit 2005
vor 14 Jahren
Objekt dynamisch aus string erstellen

Ich möchte zur Laufzeit aus einem Form-Namen als String ein Form-Objekt erzeugen. Ich mache das über Type.GetType() und Activator.CreateInstance().

Das ganze klappt auch, wenn das zu erstellende Formobject bzw. Klasse im gleichen Projekt ist. Da ich aber eine Projektmappe mit einem Startprojekt (exe) mit diversen Projekten (DLLs) habe, möchte ich auch aus anderen Projekten die Forms erzeugen. Das klappt leider nicht. Im Hauptprojekt ist der Namespace bekannt. Auch der Verweis auf die DLL in vorhanden. Es kommt immer der Fehler "... Klasse konte nicht geladen werden" bei Type.GetType().

        private Control createNewControl(string controlToCreate) 
        {

            Form myControl = new Form();
            
            try 
            { 
                //Define the type of the control you want to create an instance of using reflection. 
                Type typeofControl = Type.GetType(controlToCreate, true);

                myControl = (Form)(Activator.CreateInstance(typeofControl));

                //(myControl as Form).Show();
 
            } 
            catch (Exception ex)
            { 
                //Set the control to null 
                myControl = null; 
            } 

            return myControl; 

        } 

Gruß
Holger

J
3.331 Beiträge seit 2006
vor 14 Jahren

Hallo Holger,

wie übergibst du denn den Typnamen? Laut :rtfm: muss es sich um den **AssemblyQualifiedName **handeln: einschließlich Assembly, Version und CultureInfo.

Type.GetType-Methode
typeName: Der Name des abzurufenden AssemblyQualifiedName.

Gruß Jürgen

1.002 Beiträge seit 2007
vor 14 Jahren

Hallo HolgerBremen,

deine try-catch-Konstruktion kannst du mit dem as-Cast schöner lösen; so musst du keine "unnötige" Exception feuern ...
[Tipp] Casten aber richtig: Begriffe wie Cast / is / as beschreibt, wie das Casten funktioniert.

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg