2009-04-08 17 views
3

Ich sehe einfache Beispiele in Bezug auf benutzerdefinierte Konfiguration in .NET. Mein Fall ist ein bisschen komplexer, mit verschachtelten Knoten.Benutzerdefinierte Konfiguration in. NET

Ich möchte in der Lage sein, diese aus der Konfigurationsdatei zu lesen:

<environments> 

<environment name="live" url="http://www.live.com"> 
    <server name="a" IP="192.168.1.10"></server> 
    <server name="b" IP="192.168.1.20"></server> 
    <server name="c" IP="192.168.1.30"></server>  
</environment> 

<environment name="dev" url="http://www.dev.com"> 
    <server name="a" IP="192.168.1.10"></server> 
    <server name="c" IP="192.168.1.30"></server> 
</environment> 

<environment name="test" url="http://www.test.com"> 
    <server name="b" IP="192.168.1.20"></server> 
    <server name="d" IP="192.168.1.40"></server> 
</environment></environments> 

Wenn jemand einen Code für das zur Verfügung stellen könnte, ich es schätzen würde.

Danke!

Antwort

9

Sie können dies lesen, indem Sie benutzerdefinierte Konfigurationsklassen implementieren, die von der ConfigurationElement-Klasse erben. Hier

ist ein Beispiel für das "Server" Element:

public class ServerElement: ConfigurationElement 
{ 
    [ConfigurationProperty("name", IsRequired = true, IsKey = true)] 
    public string Name 
    { 
     get { return ((string)base["name"]); } 
     set { base["name"] = value; } 
    } 

    ... 
} 

Die Umwelt Element ist eigentlich eine Sammlung und könnte wie folgt implementiert werden:

public class EnvironmentElement: ConfigurationElementCollection 
{ 
    protected override ConfigurationElement CreateNewElement(string elementName) 
    { 
     return new ServerElement(...); 
    } 
} 
+0

dank PEter, können Sie bitte weiter und die anderen Klassen schreiben? Es ist wirklich verwirrend, wie man die ganze Sache verkabelt:/ –

+0

Reicht das, um zu beginnen? :) –

+0

Sicher, vielen Dank. Ich werde versuchen, von hier zu folgen. Danke noch einmal. –

6

Sie müssen einige Klassen erstellen, um die benutzerdefinierten Konfigurationsabschnitte der Konfigurationsdatei zu verarbeiten.

Es ist ein sehr guter Blog-Eintrag von Phil Haack dazu: Custom Configuration Sections in 3 Easy Steps.

Edit:

Ich habe versucht, den Code Project Artikel, den ich in der Vergangenheit verwendet haben, um Sie zu lernen, wie dies zu erreichen, und ich habe es auf Phils Blog-Eintrag gefunden:

hier ist es Unraveling the Mysteries of .NET 2.0 Configuration

es die Informationen enthält, die notwendig, um verschachtelte Elemente und Sammlungen zu behandeln.

+0

Danke, aber dieses Beispiel enthält keine verschachtelten Elemente .... –

0

Mit Blick auf den Inhalt Ihres Beispiels (Ausrichtung auf verschiedene Staging-Umgebungen), anstatt Konfigurationsdateien dynamisch zu lesen, möchten Sie vielleicht web deployment projects, wie in der answer to an earlier question angezeigt.

Sie behandeln Config zum Zeitpunkt der Bereitstellung Verschmelzung statt: eine gute Idee, vor allem, wenn Sie sensible Informationen wie Verbindungszeichenfolgen mit dem Service-Account-Passwörter haben ...

7

Ein geschicktes Werkzeug, das ich über kam vor kurzem ist die Configuration Section Designer bis auf CodePlex ; integriert sich gut in VS.

Erzeugt Klassen, XML-Schema usw. Empfohlen.

+1

Ausgezeichnetes Werkzeug, hat Ich gehe ohne Probleme nach stundenlangem Versuch, Dinge manuell arbeiten zu lassen. Vielen Dank! – phloopy

Verwandte Themen