Generische Methode für das Lesen von config-Abschnitte

Versuche zur Umsetzung einer generische Weise für das Lesen von Abschnitten aus einer config-Datei. Die config-Datei enthält einen "standard" - Teile oder 'custom' - Abschnitte, wie unten beschrieben.

<configuration> 
<configSections>
    <section name="NoteSettings" type="System.Configuration.NameValueSectionHandler"/>
</configSections>   
<appSettings>
    <add key="AutoStart" value="true"/>
    <add key="Font" value="Verdana"/>
</appSettings>  
<NoteSettings>
    <add key="Height" value="100"/>
    <add key="Width" value="200"/>
</NoteSettings> 

Die Methode, die ich versucht habe, ist wie folgt :

    private string ReadAllSections()
    {
        StringBuilder configSettings = new StringBuilder();

        Configuration configFile = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath);

        foreach (ConfigurationSection section in configFile.Sections)
        {
            configSettings.Append(section.SectionInformation.Name);
            configSettings.Append(Environment.NewLine);                

            if (section.GetType() == typeof(DefaultSection))
            {
                NameValueCollection sectionSettings = ConfigurationManager.GetSection(section.SectionInformation.Name) as NameValueCollection;

                if (sectionSettings != null)
                {
                    foreach (string key in sectionSettings)
                    {
                        configSettings.Append(key);
                        configSettings.Append(" : ");
                        configSettings.Append(sectionSettings[key]);
                        configSettings.Append(Environment.NewLine);
                    }
                }
            }

            configSettings.Append(Environment.NewLine);
        }

        return configSettings.ToString();
    }

Unter der Annahme, dass alle benutzerdefinierten Abschnitten wird nur der SCHLÜSSEL-WERT -

  • Ist so eine Umsetzung möglich? Und wenn ja, ist es ein 'sauberer' und elegantere Lösung als diese?
  • Der oben beschriebenen Methode liest auch 'unsichtbar' Abschnitte wie mscorlib, system.Diagnostik. Ist dieser vermeidbar?
  • System.Daten.Dataset gibt einen dataset zurück, die nicht Stimmen, um eine NameValueCollection. Wie können diese behandelt werden?

Korrekturen/Vorschläge willkommen.

Dank.

InformationsquelleAutor Codex | 2009-01-15
Schreibe einen Kommentar