Forms oder Klassen aus DLL zur Laufzeit laden?
-
Hallo,
gibt es eine möglichkeit, Forms oder Klassen aus einer Klassenbibliothek zur Laufzeit zu laden?
Praktisch wie ein einfaches PlugIn?
-
Kompletten Code kann ich dir nicht bieten, aber so in etwa
//1.Assembly laden Assembly asm = Assembly.LoadFrom("name.dll"); //evtl Assembly.Load(...) //2.Module aus der Assembly holen Module[] modules = asm.GetModules(); //3. Typen aus den Modulen holen und in List speichern List<Type> types = new List<Types>(); foreach (module m in modules) { types.Add(m.GetTypes()); }
Jetzt hast du eine List der Types im Assembly. Du könntest jetzt darüber iterieren und z.B. Klassen suchen, die ein bestimmtes Interface implementieren oder eine bestimmte Basisklasse haben.
Mit Activator.CreateInstance(...) kannst du ein objekt mit Hilfe eines Type-Objekts erstellen.
Wäre jetzt mein Ansatz. Habe sowas allerdings noch nie gebraucht, gut möglich dass es bessere Lösungen gibt...
-
und dazu eignet sich eine normale klassenbibliothek, keine DLL im eigentlichen sinne?
-
Frager2 schrieb:
und dazu eignet sich eine normale klassenbibliothek, keine DLL im eigentlichen sinne?
Eine .NET-Klassenbibliothek *ist* eine DLL!
-
sorry, hab eben über das thema noch nicht so viel gelesen!
vielleicht hat jemand eine gute einstiegslektüre oder tutorial für mich was dieses thema behandelt?