.NET Framework Lettura delle impostazioni fortemente tipizzate dalla sezione personalizzata del file di configurazione


Esempio

A partire da una nuova classe Settings e dalla sezione di configurazione personalizzata:

Scheda Impostazioni della finestra di dialogo Proprietà progetto

Aggiungere un'impostazione dell'applicazione denominata ExampleTimeout, utilizzando l'ora System.Timespan e impostare il valore su 1 minuto:

Scheda Impostazioni durante l'aggiunta dell'impostazione dell'applicazione ExampleTimeout

Salva le proprietà del progetto, che salva le voci della scheda Impostazioni, oltre a rigenerare la classe Impostazioni personalizzate e aggiorna il file di configurazione del progetto.

Usa l'impostazione dal codice (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();
        }
    }
}

Sotto le coperte

Cerca nel file di configurazione del progetto per vedere come è stata creata la voce di impostazione dell'applicazione:

app.config (Visual Studio aggiorna automaticamente)

<?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>

Si noti che la sezione appSettings non viene utilizzata. La sezione applicationSettings contiene una sezione personalizzata dello spazio dei nomi con un elemento di setting per ogni voce. Il tipo del valore non è memorizzato nel file di configurazione; è noto solo dalla classe Settings .

Cerca nella classe Settings per vedere come usa la classe ConfigurationManager per leggere questa sezione personalizzata.

Settings.designer.cs (per progetti 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"]));
        }
    }
...

Si noti che è stato creato un DefaultSettingValueAttribute per memorizzare il valore immesso nella scheda Impostazioni della finestra di dialogo Proprietà progetto. Se la voce non è presente nel file di configurazione, viene utilizzato questo valore predefinito.