2009-07-03 16 views
2

Ich möchte in der Lage sein ConfigurationManager zu erweitern, so dass ich eine app.config haben einige wie folgt aus:Customizing app.config

<configuration> 

<databases> 
    <add name="db1" server="someServer" dbName="superDB" userName="" password=""/> 
    <add name="db2" server="anotherServer" dbName="ordinaryDB" userName="dba" password="dba"/> 
</databases> 

</configuration> 

Und dann diese Felder über ConfigurationManager wie so zugreifen zu können,

string dbName = ConfigurationManager.Databases["db1"].DBName; 

ich habe einen Blick auf Anpassungsoptionen zur Verfügung habe (here zum Beispiel), aber es gibt mir nicht wirklich, was ich versuche zu erreichen. Ist das überhaupt möglich?

(Ich weiß, dass ich dies tun könnte meine eigenen Konfigurationsmanager durch Rollen, aber ich würde wirklich zu verlängern bevorzugen, was der .NET-Framework zur Zeit, wenn überhaupt möglich, bietet)

Antwort

2

Es sieht aus wie Sie die ConfigurationManager.ConnectionStrings Eigenschaft in diesem Fall verwendet werden soll.

Wenn Sie die App.Config wirklich so erweitern möchten, dass sie Ihre eigenen Konfigurationsabschnitte enthält, können Sie eine Klasse erstellen, die von der Klasse ConfigurationSection abgeleitet ist. Es gibt ein gutes Beispiel here.

Was Sie in Ihrer Frage ausgedrückt haben ... in der Lage zu sein, etwas wie ConfigurationManager.Databases zu tun, wobei Datenbanken eine benutzerdefinierte statische Eigenschaft in der ConfigurationManager-Klasse ist, ist nicht möglich.

+0

Guten Punkt über Verbindungszeichenfolgen. Es kam mir nicht in den Sinn, trotz der Tatsache, dass ich die Informationen verwenden würde, die ich konfiguriert habe, um effektiv eine Reihe von Verbindungszeichenfolgen zu entwickeln. Ob das Definieren von Verbindungszeichenfolgen schwieriger ist oder nicht, ist eine andere Frage, die ich schätze, einfach den Server, den Datenbanknamen usw. für den Benutzer anzugeben. Vielen Dank! – jpoh

2

Sie haben keine eigenen erstellen Konfigurationsmanager. Sie können dies tun, indem Sie einen benutzerdefinierten Konfigurationsabschnitt erstellen, ihn in der Konfigurationsdatei registrieren und fertig sind.

Hope this ...

Ps gutes Tutorial @ codeproject.com hilft: http://www.codeproject.com/KB/dotnet/mysteriesofconfiguration.aspx

+0

4 nur die gute Tutorial –

1

Sie können ConfigSection verwenden, whis diese Klasse können Sie Ihr benutzerdefiniertes Konfigurationsattribut zur Konfigurationsdatei hinzufügen.

Es gibt ein sehr nützliches Visual Studio-Add-In (Konfigurationsbereichs-Designer), mit dem Sie .NET-Konfigurationsabschnitte grafisch entwerfen und automatisch den gesamten erforderlichen Code und eine Schemadefinition (XSD) für sie generieren können.

Für die Installation und Gebrauchsanweisungen finden Sie in den here