Fremde DLL einbinden

14/04/2008 - 11:21 von Stephan Glahs | Report spam
Hallo Leute!

Frage:

Wie kann ich aus meiner Anwendung heraus Klassen nutzen, die in einer
DLL untergebracht sind, die erst zur Laufzeit bekannt wird.

Folgendes möchte ich verwirklichen:

Ich stelle eine DLL bereit, die Schnittstellen definiert. Andere Menschen
können dann diese Schnittstellen in einer eigenen Klasse implementieren und
sozusagen PlugIns für meine Anwendung schreiben.

Die Plugins machen Sie der Anwendung dadurch bekannt, das sie ihre DLL in
ein
vorher vereinbartes Verzeichnis kopieren (innerhalb des Programmordners).
Meine Anwendung überprüft das Verzeichnis wenn es nach PlugIns sucht
und bietet sie dem Anwender anhand des DLL-Dateinamens an.

Wenn er diese auswàhlt, möchte ich die Methoden der Klasse zugànglich
haben. Die Übergabe von Werten erfolgt dann immer auf die gleiche Weise,
je nach dem welches Interface der Klassenschreiber implementiert hat.

Soweit das grobe Gerüst. Das da ne Menge Code drumherum gehört ist mir klar,
mich interessiert aber erstmal nur, wie ich die DLL aufrufe und auf die
Klassen
zugreifen kann die in ihr sind. Ich muß auch nicht die enthaltenen Klasse
auslesen
können, es reicht praktisch das der Anwender die Methoden usw. benennt und
wenn meine Anwendung sie dort nicht findet, kommt halt ne Exception.

Danke für Eure Hilfe

Stephan
 

Lesen sie die antworten

#1 Thomas Scheidegger
14/04/2008 - 13:47 | Warnen spam
Hallo Stephan

wie ich die DLL aufrufe



System.Reflection Namespace, etwa grob:

Assembly.LoadFrom
Assembly.GetType
Type.GetInterface(s)
Assembly.CreateInstance / Activator.CreateInstance
+Interface-Cast.

Dann Aufruf der Methoden direkt
über die zuvor definierten Interfaces aus der shared-assembly.


Ab 3.5 hat .NET ein eigentliches Add-In Framework.



Thomas Scheidegger - 'NETMaster'
http://www.cetus-links.org/oo_dotnet.html - http://dnetmaster.net/

Ähnliche fragen