Evaluar y enviar comentarios
Contraer todo/Expandir todo Contraer todo
Esta página es específica de
Microsoft Visual Studio 2005/.NET Framework 2.0

Hay además otras versiones disponibles para:
Biblioteca de clases de .NET Framework
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)

Visual Basic (Declaración)
Public MustInherit Class ConfigurationSection
    Inherits ConfigurationElement
Visual Basic (Uso)
Dim instance As ConfigurationSection
C#
public abstract class ConfigurationSection : ConfigurationElement
C++
public ref class ConfigurationSection abstract : public ConfigurationElement
J#
public abstract class ConfigurationSection extends ConfigurationElement
JScript
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.

Visual Basic
' Define a custom section.
' The CustomSection type alows to define a custom section 
' programmatically.

NotInheritable Public Class CustomSection
   Inherits ConfigurationSection
   ' The collection (property bag) that conatains 
   ' the section properties.
   Private Shared _Properties As ConfigurationPropertyCollection
   
   ' Internal flag to disable 
   ' property setting.
   Private Shared _ReadOnly As Boolean
   
   ' The FileName property.
    Private Shared _FileName As New ConfigurationProperty( _
    "fileName", GetType(String), _
    "default.txt", _
    ConfigurationPropertyOptions.IsRequired)
   
   ' The MasUsers property.
    Private Shared _MaxUsers As New ConfigurationProperty( _
    "maxUsers", GetType(Long), _
    CType(1000, Long), _
    ConfigurationPropertyOptions.None)
   
   ' The MaxIdleTime property.
    Private Shared _MaxIdleTime As New ConfigurationProperty( _
    "maxIdleTime", GetType(TimeSpan), _
    TimeSpan.FromMinutes(5), _
    ConfigurationPropertyOptions.IsRequired)
   
   
   ' CustomSection constructor.
   Public Sub New()
      ' Property initialization
        _Properties = _
        New ConfigurationPropertyCollection()
      
      _Properties.Add(_FileName)
      _Properties.Add(_MaxUsers)
      _Properties.Add(_MaxIdleTime)
   End Sub 'New
   
   
   ' This is a key customization. 
   ' It returns the initialized property bag.
    Protected Overrides ReadOnly Property Properties() _
    As ConfigurationPropertyCollection
        Get
            Return _Properties
        End Get
    End Property
   
   
   
   Private Shadows ReadOnly Property IsReadOnly() As Boolean
      Get
         Return _ReadOnly
      End Get
   End Property
   
   
   ' Use this to disable property setting.
   Private Sub ThrowIfReadOnly(propertyName As String)
      If IsReadOnly Then
            Throw New ConfigurationErrorsException( _
            "The property " + propertyName + " is read only.")
      End If
   End Sub 'ThrowIfReadOnly
   
   
   
   ' Customizes the use of CustomSection
    ' by setting _ReadOnly to false.
   ' Remember you must use it along with ThrowIfReadOnly.
   Protected Overrides Function GetRuntimeObject() As Object
      ' To enable property setting just assign true to
      ' the following flag.
      _ReadOnly = True
      Return MyBase.GetRuntimeObject()
   End Function 'GetRuntimeObject
   
   
    <StringValidator( _
    InvalidCharacters:=" ~!@#$%^&*()[]{}/;'""|\", _
    MinLength:=1, MaxLength:=60)> _
    Public Property FileName() As String
        Get
            Return CStr(Me("fileName"))
        End Get
        Set(ByVal value As String)
            ' With this you disable the setting.
            ' Renemmber that the _ReadOnly flag must
            ' be set to true in the GetRuntimeObject.
            ThrowIfReadOnly("FileName")
            Me("fileName") = value
        End Set
    End Property
   
   
    <LongValidator( _
    MinValue:=1, MaxValue:=1000000, _
    ExcludeRange:=False)> _
    Public Property MaxUsers() As Long
        Get
            Return Fix(Me("maxUsers"))
        End Get
        Set(ByVal value As Long)
            Me("maxUsers") = Value
        End Set
    End Property
   
   
    <TimeSpanValidator( _
    MinValueString:="0:0:30", _
    MaxValueString:="5:00:0", ExcludeRange:=False)> _
    Public Property MaxIdleTime() As TimeSpan
        Get
            Return CType(Me("maxIdleTime"), TimeSpan)
        End Get
        Set(ByVal value As TimeSpan)
            Me("maxIdleTime") = Value
        End Set
    End Property
End Class 'CustomSection 
C#
// 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
Contenido de la comunidad   ¿Qué es Community Content?
Agregar contenido nuevo RSS  Anotaciones
Processing
© 2009 Microsoft Corporation. Reservados todos los derechos. Términos de uso | Marcas Registradas | Privacidad
Page view tracker