| 

.NET C# Java Javascript Exception

1
Wie kann ein Plugin System realisiert werden?

Das die Anwendung Klassen während der Laufzeit lädt und verwendet kann.
News:
08.09.2009
Razack 31 2
5 Antworten
1
Es kommt darauf an welche Zielsetzung Du hast...

Wenn Du zum Beispiel in einer WPF-Anwendung Module inklusive Forms et cetera nachladen möchtest (Host -> Plugins), kann ich Dir Composite Application Guidance for WPF (ehemals Prism) von Microsoft empfehlen.

Ganz billig geht das Nachladen immer noch mit Assembly.Load() aus System.Reflection.
08.09.2009
Kiko 541 1 3
Bezieht sich die Frage von Razack auf managed C++? Hätte ich jetzt nicht gedacht.
andre 08.09.2009
1
Als Ergänzung zu Kikos Antwort:
Hier wird ein exemplarische vorgehen gezeigt.
08.09.2009
gfoidl 9,4k 3 5
1
Das Qt Framework bietet diese Möglichkeit für C++ und ist obendrein für Windows und Posix verfügbar.

http://qt.nokia.com/
http://qt.nokia.com/doc/4.5/index.html
http://qt.nokia.com/doc/4.5/plugins-howto.html

Gruß
08.09.2009
global667 81 2
1
Jedes Betriebssystem bietet dir ein System um dynamische bibliotheken nachzuladen, unter UNIX währe dies dlopen(3)/dlsyn(3)/dlclose(3)
08.09.2009
psychoschlumpf 77 1 2
0
Du definierst ein allgemeines Interface fuer deine Plugins. Lagerst die eigentliche Implementation in Bibliotheken aus. Fuegst eine Factoryfunktion fuer die Erzeugung und Vernichtung deines Pluginobjektes der Bibliothek hinzu. Laedst Bibliothek mit Plugin zur Laufzeit. Erzeugst ueber die Factoryfunktion das Pluginobjekt ... und benutzt es ganz normal.

Ein einfaches Beispiel, wie es unter Linux mit dlopen und den anderen gemacht wird, findest du unter Dynamic Class Loading for C++ on Linux.

Das kann man auch gut mit einer Scriptsprache wie Lua verbinden, so dass das Plugin sich automatisch mit seinen Funktionen am Laufzeitsystem registriert. So braucht man nur ein minimales Interface zu kennen (die Registrierungsfunktionen) und kann Objekte erzeugen, vernichten naja, alles was das Objekt durch die registrierten Funktionen zulaesst, ohne jemals die Headerdatei der Klasse (oder entsprechenden Interfaces) in sein Projekt eingebunden zu haben.
08.09.2009
knivil 209 2

Stelle deine Html-Frage jetzt!