.NET Framework Lectura de configuraciones fuertemente tipadas de la sección personalizada del archivo de configuración


Ejemplo

A partir de una nueva clase de configuración y una sección de configuración personalizada:

Pestaña de configuración del diseñador de propiedades del proyecto

Agregue una configuración de aplicación llamada ExampleTimeout, usando la hora System.Timespan, y establezca el valor en 1 minuto:

Pestaña de configuración al agregar la configuración de la aplicación ExampleTimeout

Guarde las Propiedades del proyecto, que guarda las entradas de la pestaña Configuración, y vuelve a generar la clase de Configuración personalizada y actualiza el archivo de configuración del proyecto.

Use la configuración del código (C #):

Programa.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();
        }
    }
}

Debajo de las sábanas

Busque en el archivo de configuración del proyecto para ver cómo se ha creado la entrada de configuración de la aplicación:

app.config (Visual Studio actualiza esto automáticamente)

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

Tenga en cuenta que la sección de appSettings no se utiliza. La sección applicationSettings contiene una sección personalizada calificada para el espacio de nombres que tiene un elemento de setting para cada entrada. El tipo de valor no se almacena en el archivo de configuración; Sólo es conocido por la clase de Settings .

Mire en la clase Settings para ver cómo usa la clase ConfigurationManager para leer esta sección personalizada.

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

Observe que se creó un DefaultSettingValueAttribute para almacenar el valor ingresado en la pestaña Configuración del Diseñador de propiedades del proyecto. Si falta la entrada del archivo de configuración, en su lugar se usa este valor predeterminado.