Laden...

PlugIn Konfiguration

Erstellt von tequila slammer vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.305 Views
T
tequila slammer Themenstarter:in
253 Beiträge seit 2006
vor 13 Jahren
PlugIn Konfiguration

Hallo Forum,

ich arbeite gerade an einem PlugIn System um eine meiner Anwendungen mit weniger Aufwand erweitern zu können. Soweit funktioniert nun schon alles. Ich habe nur das Problem, dass ich keine Konfigurationen zu den PlugIns erstellen kann.

Zur Lösung des Problem sind mir zwei Ideen gekommen.

  1. Ich lege zu jedem PlugIn eine App.Config an. Leider klappt das nicht, weil das PlugIn diese nicht lesen kann. Klar, weil das PlugIn imm Kontext meines Hosts läuft.

  2. Das PlugIn muss seine Konfig selbst laden. Im Standardkonstruktor kann ich also xml Deserialisieren. Klingt schonmal nicht schlecht. Vorteil: der Host hat nichts mit der Konfiguration des PlugIns zu tun. Nachteil: Es gibt kein einheitliches System für die Konfiguration.

Wie löst Ihr solche Sachen? Habt Ihr besser Lösungen als meine zweite Idee?

799 Beiträge seit 2007
vor 13 Jahren

Leg doch in dem Config-File deines Hosts beim Einspielen der Plugins eine eigene Config-Section an. Du müsstest dann zwar im schlimmsten Fall eine Methode in deinen Plugins vorsehen die dir eine Dummy-Konfiguration erstellt aber du hättest alles schön zentral bei einander. (Wobei du ja die Config-Files der Plugins auch auslagern könntest und im Config-File deines Hosts darauf verlinkst.)

As a man thinketh in his heart, so he is.

  • Jun Fan
    Es gibt nichts Gutes, außer man tut es.
  • Erich Kästner
    Krawutzi-Kaputzi
  • Kasperl
T
tequila slammer Themenstarter:in
253 Beiträge seit 2006
vor 13 Jahren

Hast du für diesen Lösungsweg ein Beispiel zur Hand. Mich interessiert besonders die Config Section (Einlesen) und das Auslagern.

799 Beiträge seit 2007
vor 13 Jahren

In dem kleinen HowTo hast du alle Infos die du brauchst, einschließlich dem Auslagern.

HowTo: Eine eigene ConfigSection schreiben

As a man thinketh in his heart, so he is.

  • Jun Fan
    Es gibt nichts Gutes, außer man tut es.
  • Erich Kästner
    Krawutzi-Kaputzi
  • Kasperl
1.361 Beiträge seit 2007
vor 13 Jahren

Hi,

für dich ist vielleicht diese Antwort zu "C# Dll config file" auf stackoverflow interessant.

Wenn du dir dies zu Gemüte geführt hast, kannst du gern einen Blick in How to have configuration file for DLL reinwerfen.

beste Grüße
zommi

T
tequila slammer Themenstarter:in
253 Beiträge seit 2006
vor 13 Jahren

Ich danke euch. Eine Menge Informationen die ich mir jetzt mal zugemüte führen werde.

Etwas verunsichert mich jedoch gerade an meinem PlugIn System. Ich versuche wann immer möglich nach den CleanCodeDeveloper Prinzipien zu programmieren. Nun erstelle ich gerade abstrakte Klassen in meiner Interface Assembly um die Klasse meines DataAccess Layers an die PlugIns weitergeben zu können ohne, dass diese meinen DataAccess Layer referenzieren müssen. Irgendwie scheint das nicht gerade dem "Don't repeat yourself"-Prinzip zu entsprechen. Da ich zumindest die Properties alle nocheinmal schreiben muss.

1.820 Beiträge seit 2005
vor 13 Jahren

Hallo!

Versuche mal, mit einem IoC/DI-Container zu arbeiten. Für die Konfiguration könntest du einen ConfigurationService schreiben, welcher im Container registriert wird und Konfigurationen entgegennehmen kann, z.B. eine Klasseninstanz, wo die Properties per Reflection ausgelesen werden (Performance sollte hierbei keine Hauptrolle spielen).
Dann müssen deine PlugIns eigentlich nur den ConfigurationService bzw. dass entsprechende Interface vorhalten, die verwaltung der Konfigurationen erfolgt zentral und den PlugIns kann es egal sein, wo du die Konfigurationen speicherst. Theoretisch kannst du diese dann sogar zusammen mit der Programm-Konfiguration z.B. in der appconfig speichern.

Nobody is perfect. I'm sad, i'm not nobody 🙁