.NET Framework Lecture de paramètres fortement typés à partir de la section personnalisée du fichier de configuration


Exemple

À partir d'une nouvelle classe Settings et d'une section de configuration personnalisée:

Onglet Paramètres du concepteur de propriétés de projet

Ajoutez un paramètre d'application nommé ExampleTimeout, en utilisant l'heure System.Timespan et définissez la valeur sur 1 minute:

Onglet Paramètres lors de l'ajout du paramètre d'application ExampleTimeout

Enregistrez les propriétés du projet, qui enregistre les entrées de l'onglet Paramètres, puis recrée la classe Paramètres personnalisée et met à jour le fichier de configuration du projet.

Utilisez le paramètre du code (C #):

Program.cs

using System;
using System.Diagnostics;
using ConsoleApplication1.Properties;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main()
        {
            TimeSpan exampleTimeout = Settings.Default.ExampleTimeout;
            Debug.Assert(TimeSpan.FromMinutes(1).Equals(exampleTimeout));

            Console.ReadKey();
        }
    }
}

Sous les couvertures

Regardez dans le fichier de configuration du projet pour voir comment l'entrée de paramétrage de l'application a été créée:

app.config (Visual Studio met à jour cela automatiquement)

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
      <section name="ConsoleApplication1.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </sectionGroup>
  </configSections>
  <appSettings />
  <applicationSettings>
    <ConsoleApplication1.Properties.Settings>
      <setting name="ExampleTimeout" serializeAs="String">
        <value>00:01:00</value>
      </setting>
    </ConsoleApplication1.Properties.Settings>
  </applicationSettings>
</configuration>

Notez que la section appSettings n'est pas utilisée. La section applicationSettings contient une section personnalisée qualifiée par un espace de noms qui contient un élément de setting pour chaque entrée. Le type de la valeur n'est pas stocké dans le fichier de configuration. il n'est connu que par la classe Settings .

Regardez dans la classe Settings pour voir comment il utilise la classe ConfigurationManager pour lire cette section personnalisée.

Settings.designer.cs (pour les projets C #)

...
    [global::System.Configuration.ApplicationScopedSettingAttribute()]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Configuration.DefaultSettingValueAttribute("00:01:00")]
    public global::System.TimeSpan ExampleTimeout {
        get {
            return ((global::System.TimeSpan)(this["ExampleTimeout"]));
        }
    }
...

Notez qu'un objet DefaultSettingValueAttribute été créé pour stocker la valeur entrée dans l'onglet Paramètres du Concepteur de propriétés de projet. Si l'entrée est manquante dans le fichier de configuration, cette valeur par défaut est utilisée à la place.