2009-04-03 2 views
2

Wir haben eine Konfigurations-XML-Datenbank. Anstatt direkt über die Datenbank-API darauf zuzugreifen, möchte ich die Konfigurationsklassen von .Net erweitern, um einen benutzerdefinierten Speicheranbieter hinzuzufügen.Wie kann ich die integrierten Konfigurationsanbieter in .Net erweitern, um benutzerdefinierten Speicher hinzuzufügen?

Ich bin mir nicht sicher, wo ich anfangen soll. Ich habe den Konfigurationsanwendungsblock gesehen, aber dieser scheint veraltet zu sein. Ich benutze .Net 3.5.

Welche Klassen sollte ich betrachten? Welche Schnittstellen muss ich implementieren? Wurde dies anderswo gemacht?

Dank

Antwort

5

Sie können beliebige Dateien in das Konfigurationssystem laden, aber Sie müssen ConfigurationManager.OpenMappedExeConfiguration Führen eines ExeConfigurationFileMap verwenden, die Sie Datei enthält.

Die Datei muss jedoch im Format .config sein, wobei <configuration> als Stammelement und <configSections> zum Definieren benutzerdefinierter Abschnitte verwendet werden müssen. Sobald dies vorhanden ist Unterklassen ConfigurationElement et al. ermöglicht ein hohes Maß an struktureller Flexibilität oder das Parsen des Elements selbst (außer Kraft setzen ConfigurationElement.DeserializeElement).

Alternativ, verwenden Sie etwas Abstraktion. Verfügen Sie über ein benutzerdefiniertes Element in der normalen .configuration mit einem Konfigurationsabschnittshandler, der eine in der Hauptdatei .config angegebene Datei lädt.

+0

Danke. Ich bin heute auch auf SettingsProvider gestoßen, was anscheinend eine sehr einfache Möglichkeit ist, einen App-Provider für benutzerdefinierte Einstellungen zu einer App hinzuzufügen ... irgendeinen Gedanken? – ng5000

+0

Einstellungen sind kein Bereich, den ich wirklich benutze, meistens ist nur ein Codegenerations-Wrapper um .config, um den Zugriff auf Werte nach Namen ein wenig einfacher zu machen. Blockiert jedoch einige der Optionen von System.Configuration (z. B. das Abrufen einer Konfigurationsinstanz aus einer beliebigen Datei, wodurch die benutzerspezifische Konfiguration aktualisierbar wird). – Richard

Verwandte Themen