Hej gör såhär: jo, det var ju så jag tänkte... men det kändes lite overkill... Jag skulle gjort på följande sätt. Ev så som du valt att göra det.Plugins-struktur med Interfaces
Tänkte implementera ett plugin-system. Men vill ha lite råd och tankar från andra. Jag har ett interface IExtension. Har en klass som läser in alla dll:er i ett directory, laddar och letar rätt på klassen som implementerar IExtension. No problems so far...
Men om jag sedan vill skriva ett plugin så måste jag ju referera till IExtension... men den klassen ligger ju i en exe-fil så då kan man inte lyfta in den i projektet...
Måste man lyfta ut interfacet till ett eget classlibrary. Det känns ju lite töntigt med tanke på att det är en klass...
Eller jag kanske skall lyfta in allt i den klassen utom just presentationen... visst det blir lika många dll:er men kanske en snyggare struktur...
Idéer mottages tacksamt. Det är ingen jätteapp utan bara en liten util så det känns lite muppigt att bryta upp det i flera lager...Sv: Plugins-struktur med Interfaces
<code>
app
|
|
hub (dll med interfacet)
|
+-----+---+---+---+
plug plug plugplug plug
</code>
så appen och pluggsen implementerar interfacet i din hub.
//RogerSv: Plugins-struktur med Interfaces
Speciellt som det bara var en liten klass (interface med en metod och en property). Men jag ska nog fundera på att flytta mer kod till den dll:en och på så sätt göra det mer:
<code>
GUI
|
|
Funktionalitet
|
---------------------------
| | |
Plugin Plugin Plugin
</code>
Så att man även kan lyfta ut GUI:et och ersätta med nåt annat om man vill...Sv: Plugins-struktur med Interfaces
GU ligger för sig i sin EXE den använder sig av klasser (ligger i dll er) som du har liggande med applikationen. I detta fall en dll som har hand om all Pluginhantering.
Dictionary inmatningen, Plugin interfacet, plugin triggern m.m.
Sedan gör det inget om du trycker in övriga klasser som din applikation använder sig av i samma dll under andra namespaces eller samma.
GU ( .exe) Presentation, Forms, Button klasser...
|
|
|------------------- dll:er för funkationaliteter, ex IPlugin, PluginCollection etc...
|------- ...
Mvh Johan