ConfigurationSection (Clase)
TOC
Collapse the table of content
Expand the table of content

ConfigurationSection (Clase)

Nota: esta clase es nueva en la versión 2.0 de .NET Framework.

Representa una sección en un archivo de configuración.

Espacio de nombres: System.Configuration
Ensamblado: System.Configuration (en system.configuration.dll)

public abstract class ConfigurationSection : ConfigurationElement
public abstract class ConfigurationSection extends ConfigurationElement
public abstract class ConfigurationSection extends ConfigurationElement

La clase ConfigurationSection se utiliza para implementar un tipo de sección personalizado. Extienda la clase ConfigurationSection para proporcionar control personalizado y acceso mediante programación a las secciones de configuración personalizadas.

Las secciones registran su tipo de control con una entrada en configSections.

Consulte el fragmento de archivo de configuración que se muestra en el próximo ejemplo.

NotaNota

En las versiones anteriores de .NET Framework, los controladores de secciones de configuración se utilizaban para modificar las opciones de configuración mediante programación. En la actualidad, las clases que extienden la clase ConfigurationSection representan todas las secciones de configuración predeterminadas.

Notas para los implementadores Puede utilizar un modelo de codificación de programación o declarativo (con atributos) para crear secciones de configuración personalizadas.

  • Modelo de programación. Este modelo requiere que se cree una propiedad para cada atributo de sección de cara a obtener y/o establecer su valor y agregarlo a la bolsa de propiedades interna de la clase base ConfigurationElement subyacente.

  • Modelo declarativo. Este modelo más sencillo, también denominado modelo con atributos, permite definir un atributo de sección utilizando una propiedad y decorándola con atributos. Estos atributos indican al sistema de configuración de ASP.NET los tipos de propiedad y sus valores predeterminados. Con esta información, que se obtiene a través de la reflexión, el sistema de configuración de ASP.NET crea los objetos de propiedad de sección y realiza la inicialización necesaria.

Configuration es la clase que permite el acceso mediante programación para editar archivos de configuración. Se puede obtener acceso de lectura o escritura a estos archivo, tal como se explica a continuación.
  • Lectura. Para leer información de configuración, se utiliza GetSection o GetSectionGroup. Tenga en cuenta que el usuario o proceso que efectúe la lectura debe tener los permisos siguientes:

    • Permiso de lectura del archivo de configuración en el nivel de jerarquía de configuración actual.

    • Permisos de lectura de todos los archivos de configuración principal.

Si la aplicación necesita un acceso de sólo lectura a su propia configuración, se recomienda que, en el caso de las aplicaciones Web, utilice la sobrecarga de los métodos GetSection. O el método GetSection en el caso de las aplicaciones cliente. Estos métodos proporcionan acceso a los valores de configuración almacenados en memoria caché para la aplicación actual, lo que supone un rendimiento mejor que el de la clase Configuration.
NotaNota

Si utiliza un método GetSection estático que tome un parámetro de ruta de acceso, dicho parámetro de ruta debe hacer referencia a la aplicación en la que se esté ejecutando el código; de lo contrario, se omite el parámetro y se devuelve la información de configuración de la aplicación que se esté ejecutando en ese momento.

  • Escritura. Para escribir información de configuración, se utiliza uno de los métodos Save. Tenga en cuenta que el usuario o proceso que efectúe la escritura debe tener los permisos siguientes:

    • Permiso de escritura respecto del directorio y archivo de configuración en el nivel de jerarquía de configuración actual.

    • Permisos de escritura respecto de todos los archivos de configuración principal.

En el ejemplo siguiente se muestra cómo implementar mediante programación una sección personalizada.

Vea en ConfigurationElement un ejemplo completo que muestra cómo implementar y utilizar una sección personalizada que se implementa utilizando el modelo con atributos.

// Define a custom section.
// The CustomSection type alows to define a custom section 
// programmatically.
public sealed class CustomSection : 
    ConfigurationSection
{
    // The collection (property bag) that conatains 
    // the section properties.
    private static ConfigurationPropertyCollection _Properties;
    
    // Internal flag to disable 
    // property setting.
    private static bool _ReadOnly;

    // The FileName property.
    private static readonly ConfigurationProperty _FileName =
        new ConfigurationProperty("fileName", 
        typeof(string),"default.txt", 
        ConfigurationPropertyOptions.IsRequired);

    // The MasUsers property.
    private static readonly ConfigurationProperty _MaxUsers =
        new ConfigurationProperty("maxUsers", 
        typeof(long), (long)1000, 
        ConfigurationPropertyOptions.None);
    
    // The MaxIdleTime property.
    private static readonly ConfigurationProperty _MaxIdleTime =
        new ConfigurationProperty("maxIdleTime", 
        typeof(TimeSpan), TimeSpan.FromMinutes(5), 
        ConfigurationPropertyOptions.IsRequired);

    // CustomSection constructor.
    public CustomSection()
    {
        // Property initialization
        _Properties = 
            new ConfigurationPropertyCollection();

        _Properties.Add(_FileName);
        _Properties.Add(_MaxUsers);
        _Properties.Add(_MaxIdleTime);
   }

  
    // This is a key customization. 
    // It returns the initialized property bag.
    protected override ConfigurationPropertyCollection Properties
    {
        get
        {
            return _Properties;
        }
    }


    private new bool IsReadOnly
    {
        get
        {
            return _ReadOnly;
        }
    }

    // Use this to disable property setting.
    private void ThrowIfReadOnly(string propertyName)
    {
        if (IsReadOnly)
            throw new ConfigurationErrorsException(
                "The property " + propertyName + " is read only.");
    }


    // Customizes the use of CustomSection
    // by setting _ReadOnly to false.
    // Remember you must use it along with ThrowIfReadOnly.
    protected override object GetRuntimeObject()
    {
        // To enable property setting just assign true to
        // the following flag.
        _ReadOnly = true;
        return base.GetRuntimeObject();
    }


    [StringValidator(InvalidCharacters = " ~!@#$%^&*()[]{}/;'\"|\\",
        MinLength = 1, MaxLength = 60)]
    public string FileName
    {
        get
        {
            return (string)this["fileName"];
        }
        set
        {
            // With this you disable the setting.
            // Renemmber that the _ReadOnly flag must
            // be set to true in the GetRuntimeObject.
            ThrowIfReadOnly("FileName");
            this["fileName"] = value;
        }
    }

    [LongValidator(MinValue = 1, MaxValue = 1000000,
        ExcludeRange = false)]
    public long MaxUsers
    {
        get
        {
            return (long)this["maxUsers"];
        }
        set
        {
            this["maxUsers"] = value;
        }
    }

    [TimeSpanValidator(MinValueString = "0:0:30",
        MaxValueString = "5:00:0",
        ExcludeRange = false)]
    public TimeSpan MaxIdleTime
    {
        get
        {
            return  (TimeSpan)this["maxIdleTime"];
        }
        set
        {
            this["maxIdleTime"] = value;
        }
    }
   
    
}

A continuación se muestra un fragmento del archivo de configuración que aplica el anterior ejemplo.

<?xml version="1.0" encoding="utf-8"?>

<configuration>

<configSections>

<section name="CustomSection" type="Samples.AspNet, CustomConfigurationSection, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" allowDefinition="Everywhere" allowExeDefinition="MachineToApplication" restartOnExternalChanges="true" />

</configSections>

<CustomSection fileName="default.txt" maxUsers="1000" maxIdleTime="00:15:00" />

</configuration>

System.Object
   System.Configuration.ConfigurationElement
    System.Configuration.ConfigurationSection
       Clases derivadas

Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows 98, Windows 2000 SP4, Windows Millennium, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition

.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.

.NET Framework

Compatible con: 2.0

Adiciones de comunidad

AGREGAR
Mostrar:
© 2016 Microsoft