ConfigurationSection Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Representa una sección dentro de un archivo de configuración.
public ref class ConfigurationSection abstract : System::Configuration::ConfigurationElement
public abstract class ConfigurationSection : System.Configuration.ConfigurationElement
type ConfigurationSection = class
inherit ConfigurationElement
Public MustInherit Class ConfigurationSection
Inherits ConfigurationElement
- Herencia
- Derivado
Ejemplos
En el ejemplo siguiente se muestra cómo implementar una sección personalizada mediante programación.
Para obtener un ejemplo completo que muestra cómo implementar y usar una sección personalizada implementada mediante el modelo con atributos, vea ConfigurationElement.
// Define a custom section.
// The CustomSection type allows to define a custom section
// programmatically.
public sealed class CustomSection :
ConfigurationSection
{
// The collection (property bag) that contains
// 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 MaxUsers 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.
// Remember 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;
}
}
}
' Define a custom section.
' The CustomSection type allows to define a custom section
' programmatically.
NotInheritable Public Class CustomSection
Inherits ConfigurationSection
' The collection (property bag) that contains
' 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 MaxUsers 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
' 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
' 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.
' Remember 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
El ejemplo siguiente es un extracto del archivo de configuración tal como se aplica al ejemplo anterior.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="CustomSection" type="Samples.AspNet. CustomSection, 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>
Comentarios
La clase se usa ConfigurationSection para implementar un tipo de sección personalizado. Amplíe la ConfigurationSection clase para proporcionar acceso de control personalizado y mediante programación a secciones de configuración personalizadas. Para obtener información sobre cómo usar secciones de configuración personalizadas, vea How to: Create Custom Configuration Sections Using ConfigurationSection.
Una sección registra su tipo de control con una entrada en el configSections
elemento . Para obtener un ejemplo, vea el extracto del archivo de configuración que se muestra en la sección Ejemplo.
Nota
En versiones anteriores de .NET Framework, los controladores de sección de configuración se usaron para realizar cambios en las opciones de configuración mediante programación. Ahora, todas las secciones de configuración predeterminadas se representan mediante clases que extienden la ConfigurationSection clase.
Notas a los implementadores
Puede usar un modelo de codificación mediante programación o declarativo (con atributos) para crear secciones de configuración personalizadas:
Modelo de programación. Este modelo requiere que para cada atributo de sección cree una propiedad para obtener o establecer su valor y agregarla al contenedor de propiedades interno de la clase base subyacente ConfigurationElement .
Modelo declarativo. Este modelo más sencillo, también denominado modelo con atributos, permite definir un atributo de sección mediante una propiedad y decorarlo con atributos. Estos atributos indican al sistema de configuración de ASP.NET sobre los tipos de propiedad y sus valores predeterminados. Con esta información, obtenida a través de la reflexión, el sistema de configuración de ASP.NET crea los objetos de propiedad section y realiza la inicialización necesaria.
La Configuration clase permite el acceso mediante programación para editar archivos de configuración. Puede acceder a estos archivos para leer o escribir de la siguiente manera:
Lectura. GetSection(String) Use o GetSectionGroup(String) para leer la información de configuración. Tenga en cuenta que el usuario o el proceso que lee deben tener los permisos siguientes:
Permiso de lectura en el archivo de configuración en el nivel de jerarquía de configuración actual.
Permisos de lectura en todos los archivos de configuración primarios.
Si la aplicación necesita acceso de solo lectura a su propia configuración, se recomienda usar los GetSection métodos sobrecargados en el caso de las aplicaciones web o el GetSection(String) método en el caso de las aplicaciones cliente.
Estos métodos proporcionan acceso a los valores de configuración almacenados en caché para la aplicación actual, que tiene un mejor rendimiento que la Configuration clase .
Nota: Si usa un método estático GetSection
que toma un path
parámetro, el path
parámetro debe hacer referencia a la aplicación en la que se ejecuta 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 actualmente.
Escritura. Use uno de los Save métodos para escribir información de configuración. Tenga en cuenta que el usuario o proceso que escribe debe tener los permisos siguientes:
Permiso de escritura en el archivo de configuración y el directorio en el nivel de jerarquía de configuración actual.
Permisos de lectura en todos los archivos de configuración.
Constructores
ConfigurationSection() |
Inicializa una nueva instancia de la clase ConfigurationSection. |
Propiedades
CurrentConfiguration |
Obtiene una referencia a la instancia de Configuration de nivel superior que representa la jerarquía de configuración a la que pertenece la instancia actual de ConfigurationElement. (Heredado de ConfigurationElement) |
ElementInformation |
Obtiene un objeto ElementInformation que contiene la funcionalidad e información no personalizable del objeto ConfigurationElement. (Heredado de ConfigurationElement) |
ElementProperty |
Obtiene el objeto ConfigurationElementProperty que representa al propio objeto ConfigurationElement. (Heredado de ConfigurationElement) |
EvaluationContext |
Obtiene el objeto ContextInformation para el objeto ConfigurationElement. (Heredado de ConfigurationElement) |
HasContext |
Obtiene un valor que indica si la propiedad CurrentConfiguration es |
Item[ConfigurationProperty] |
Obtiene o establece una propiedad o atributo de este elemento de configuración. (Heredado de ConfigurationElement) |
Item[String] |
Obtiene o establece una propiedad, un atributo o un elemento secundario de este elemento de configuración. (Heredado de ConfigurationElement) |
LockAllAttributesExcept |
Obtiene la colección de atributos bloqueados. (Heredado de ConfigurationElement) |
LockAllElementsExcept |
Obtiene la colección de elementos bloqueados. (Heredado de ConfigurationElement) |
LockAttributes |
Obtiene la colección de atributos bloqueados. (Heredado de ConfigurationElement) |
LockElements |
Obtiene la colección de elementos bloqueados. (Heredado de ConfigurationElement) |
LockItem |
Obtiene o establece un valor que indica si el elemento está bloqueado. (Heredado de ConfigurationElement) |
Properties |
Obtiene la colección de propiedades. (Heredado de ConfigurationElement) |
SectionInformation |
Obtiene un objeto SectionInformation que contiene la funcionalidad e información no personalizable del objeto ConfigurationSection. |
Métodos
DeserializeElement(XmlReader, Boolean) |
Lee XML del archivo de configuración. (Heredado de ConfigurationElement) |
DeserializeSection(XmlReader) |
Lee XML del archivo de configuración. |
Equals(Object) |
Compara la instancia actual de ConfigurationElement con el objeto especificado. (Heredado de ConfigurationElement) |
GetHashCode() |
Obtiene un valor único que representa la instancia actual de ConfigurationElement. (Heredado de ConfigurationElement) |
GetRuntimeObject() |
Devuelve un objeto personalizado cuando se reemplaza en una clase derivada. |
GetTransformedAssemblyString(String) |
Devuelve la versión transformada del nombre de ensamblado especificado. (Heredado de ConfigurationElement) |
GetTransformedTypeString(String) |
Devuelve la versión transformada del nombre de tipo especificado. (Heredado de ConfigurationElement) |
GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
Init() |
Establece el objeto ConfigurationElement en su estado inicial. (Heredado de ConfigurationElement) |
InitializeDefault() |
Se utiliza para inicializar un conjunto predeterminado de valores para el objeto ConfigurationElement. (Heredado de ConfigurationElement) |
IsModified() |
Indica si se ha modificado este elemento de configuración desde la última vez en que se guardo o cargó al implementarlo en una clase derivada. |
IsReadOnly() |
Obtiene un valor que indica si el objeto ConfigurationElement es de solo lectura. (Heredado de ConfigurationElement) |
ListErrors(IList) |
Agrega a la lista que se pasa los errores de propiedad no válida que hay en este objeto ConfigurationElement y en todos los subelementos. (Heredado de ConfigurationElement) |
MemberwiseClone() |
Crea una copia superficial del Object actual. (Heredado de Object) |
OnDeserializeUnrecognizedAttribute(String, String) |
Obtiene un valor que indica si se ha encontrado un atributo desconocido durante la deserialización. (Heredado de ConfigurationElement) |
OnDeserializeUnrecognizedElement(String, XmlReader) |
Obtiene un valor que indica si se ha encontrado un elemento desconocido durante la deserialización. (Heredado de ConfigurationElement) |
OnRequiredPropertyNotFound(String) |
Se inicia una excepción cuando no se encuentra una propiedad necesaria. (Heredado de ConfigurationElement) |
PostDeserialize() |
Se llama a este método después de la deserialización. (Heredado de ConfigurationElement) |
PreSerialize(XmlWriter) |
Se llama a este método antes de la serialización. (Heredado de ConfigurationElement) |
Reset(ConfigurationElement) |
Restablece el estado interno del objeto ConfigurationElement, incluyendo los bloqueos y las colecciones de propiedades. (Heredado de ConfigurationElement) |
ResetModified() |
Restablece el valor del método IsModified() en |
SerializeElement(XmlWriter, Boolean) |
Escribe el contenido de este elemento de configuración en el archivo de configuración cuando se implementa en una clase derivada. (Heredado de ConfigurationElement) |
SerializeSection(ConfigurationElement, String, ConfigurationSaveMode) |
Crea una cadena XML que contiene una vista separada del objeto ConfigurationSection como una sección única para escribir en un archivo. |
SerializeToXmlElement(XmlWriter, String) |
Escribe las etiquetas externas de este elemento de configuración en el archivo de configuración cuando se implementa en una clase derivada. (Heredado de ConfigurationElement) |
SetPropertyValue(ConfigurationProperty, Object, Boolean) |
Establece una propiedad en el valor especificado. (Heredado de ConfigurationElement) |
SetReadOnly() |
Establece la propiedad IsReadOnly() para el objeto ConfigurationElement y todos los subelementos. (Heredado de ConfigurationElement) |
ShouldSerializeElementInTargetVersion(ConfigurationElement, String, FrameworkName) |
Indica si el elemento especificado se debe serializar cuando la jerarquía de objetos de configuración se serializa para la versión de destino especificada de .NET Framework. |
ShouldSerializePropertyInTargetVersion(ConfigurationProperty, String, FrameworkName, ConfigurationElement) |
Indica si la propiedad especificada se debe serializar cuando la jerarquía de objetos de configuración se serializa para la versión de destino especificada de .NET Framework. |
ShouldSerializeSectionInTargetVersion(FrameworkName) |
Indica si la instancia actual ConfigurationSection se debe serializar cuando la jerarquía de objetos de configuración se serializa para la versión de destino especificada de .NET Framework. |
ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |
Unmerge(ConfigurationElement, ConfigurationElement, ConfigurationSaveMode) |
Modifica el objeto ConfigurationElement para quitar todos los valores que no se deben guardar. (Heredado de ConfigurationElement) |