ConfigurationProperty Clase

Definición

Representa un atributo o un elemento secundario de un elemento de configuración. Esta clase no puede heredarse.

Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.

public ref class ConfigurationProperty sealed
public sealed class ConfigurationProperty
type ConfigurationProperty = class
Public NotInheritable Class ConfigurationProperty
Herencia
ConfigurationProperty

Ejemplos

  1. En el ejemplo de código siguiente se muestra cómo usar al ConfigurationProperty crear una sección personalizada.
using System;
using System.Configuration;
using System.Collections;
using System.ComponentModel;

namespace ConfigurationPropertyExample
{
    // Define a custom section.
    // Shows how to use the ConfigurationProperty
    // class when defining a custom section.
    public sealed class CustomSection : ConfigurationSection
    {
        // The collection (property bag) that contains 
        // the section properties.
        private static ConfigurationPropertyCollection _Properties;

        // The FileName property.
        private static ConfigurationProperty _FileName;

        // The Alias property.
        private static ConfigurationProperty _Alias;

        // The MaxUsers property.
        private static ConfigurationProperty _MaxUsers;

        // The MaxIdleTime property.
        private static ConfigurationProperty _MaxIdleTime;

        // CustomSection constructor.
        static CustomSection()
        {
            // Initialize the _FileName property
            _FileName =
                new ConfigurationProperty("fileName",
                typeof(string), "default.txt");

            // Initialize the _MaxUsers property
            _MaxUsers =
                new ConfigurationProperty("maxUsers",
                typeof(long), (long)1000,
                ConfigurationPropertyOptions.None);

            // Initialize the _MaxIdleTime property
            TimeSpan minTime = TimeSpan.FromSeconds(30);
            TimeSpan maxTime = TimeSpan.FromMinutes(5);

            ConfigurationValidatorBase _TimeSpanValidator =
                new TimeSpanValidator(minTime, maxTime, false);

            _MaxIdleTime =
                new ConfigurationProperty("maxIdleTime",
                typeof(TimeSpan), TimeSpan.FromMinutes(5),
                TypeDescriptor.GetConverter(typeof(TimeSpan)),
                _TimeSpanValidator,
                ConfigurationPropertyOptions.IsRequired,
                "[Description:This is the max idle time.]");

            // Initialize the _Alias property
            _Alias =
                new ConfigurationProperty("alias",
                typeof(string), "alias.txt");

            // Initialize the Property collection.
            _Properties = new ConfigurationPropertyCollection();
            _Properties.Add(_FileName);
            _Properties.Add(_Alias);
            _Properties.Add(_MaxUsers);
            _Properties.Add(_MaxIdleTime);
        }

        // Return the initialized property bag
        // for the configuration element.
        protected override ConfigurationPropertyCollection Properties
        {
            get
            {
                return _Properties;
            }
        }

        // Clear the property.
        public void ClearCollection()
        {
            Properties.Clear();
        }

        // Remove an element from the property collection.
        public void RemoveCollectionElement(string elName)
        {
            Properties.Remove(elName);
        }

        // Get the property collection enumerator.
        public IEnumerator GetCollectionEnumerator()
        {
            return (Properties.GetEnumerator());
        }

        [StringValidator(InvalidCharacters = " ~!@#$%^&*()[]{}/;'\"|\\",
            MinLength = 1, MaxLength = 60)]
        public string FileName
        {
            get
            {
                return (string)this["fileName"];
            }
            set
            {
                this["fileName"] = value;
            }
        }

        [StringValidator(InvalidCharacters = " ~!@#$%^&*()[]{}/;'\"|\\",
            MinLength = 1, MaxLength = 60)]
        public string Alias
        {
            get
            {
                return (string)this["alias"];
            }
            set
            {
                this["alias"] = value;
            }
        }

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

        public TimeSpan MaxIdleTime
        {
            get
            {
                return (TimeSpan)this["maxIdleTime"];
            }
            set
            {
                this["maxIdleTime"] = value;
            }
        }
    }
}
Imports System.Configuration
Imports System.Collections
Imports System.ComponentModel

' Define a custom section.
' Shows how to use the ConfigurationProperty
' class when defining a custom section.
Public NotInheritable Class CustomSection
    Inherits ConfigurationSection

    ' The collection (property bag) that contains 
    ' the section properties.
    Private Shared _Properties As ConfigurationPropertyCollection

    ' The FileName property.
    Private Shared _FileName As ConfigurationProperty

    ' The Alias property.
    Private Shared _Alias As ConfigurationProperty

    ' The MasUsers property.
    Private Shared _MaxUsers As ConfigurationProperty

    ' The MaxIdleTime property.
    Private Shared _MaxIdleTime As ConfigurationProperty

    ' CustomSection constructor.
    Shared Sub New()

        ' Initialize the _FileName property
        _FileName = New ConfigurationProperty( _
            "fileName", GetType(String), "default.txt")

        ' Initialize the _MaxUsers property
        _MaxUsers = New ConfigurationProperty( _
            "maxUsers", GetType(Long), 1000L, _
            ConfigurationPropertyOptions.None)

        ' Initialize the _MaxIdleTime property
        Dim minTime As TimeSpan = TimeSpan.FromSeconds(30)
        Dim maxTime As TimeSpan = TimeSpan.FromMinutes(5)
        Dim _TimeSpanValidator = _
            New TimeSpanValidator(minTime, maxTime, False)

        _MaxIdleTime = New ConfigurationProperty( _
            "maxIdleTime", GetType(TimeSpan), _
            TimeSpan.FromMinutes(5), _
            TypeDescriptor.GetConverter(GetType(TimeSpan)), _
            _TimeSpanValidator, _
            ConfigurationPropertyOptions.IsRequired, _
            "[Description:This is the max idle time.]")

        ' Initialize the _Alias property
        _Alias = New ConfigurationProperty( _
            "alias", GetType(String), "alias.txt")

        ' Property collection initialization.
        ' The collection (property bag) that contains 
        ' the properties is declared as:
        ' ConfigurationPropertyCollection _Properties;
        _Properties = New ConfigurationPropertyCollection()
        _Properties.Add(_FileName)
        _Properties.Add(_Alias)
        _Properties.Add(_MaxUsers)
        _Properties.Add(_MaxIdleTime)

    End Sub

    ' Return the initialized property bag
    ' for the configuration element.
    Protected Overrides ReadOnly Property Properties() _
    As ConfigurationPropertyCollection
        Get
            Return _Properties
        End Get
    End Property

    <StringValidator(InvalidCharacters:= _
    " ~!@#$%^&*()[]{}/;'""|\", MinLength:=1, _
    MaxLength:=60)> _
    Public Property FileName() As String
        Get
            Return CStr(Me("fileName"))
        End Get
        Set(ByVal value As String)
            Me("fileName") = value
        End Set
    End Property

    <StringValidator(InvalidCharacters:= _
    " ~!@#$%^&*()[]{}/;'""|\", MinLength:=1, _
    MaxLength:=60)> _
    Public Property [Alias]() As String
        Get
            Return CStr(Me("alias"))
        End Get
        Set(ByVal value As String)
            Me("alias") = 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

    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

A continuación se muestra un extracto del archivo de configuración usado por el código del ejemplo anterior.

<configuration>
  <configSections>
    <section name="CustomSection" type="ConfigurationPropertyExample.CustomSection, ConfigurationPropertyExample"
      allowDefinition="Everywhere" allowExeDefinition="MachineToApplication"
      restartOnExternalChanges="true" />
  </configSections>
  <CustomSection fileName="override.txt" alias="alias.txt"
    maxUsers="1000" maxIdleTime="00:05:00" />
</configuration>

En el ejemplo siguiente se muestra cómo crear la sección anterior en el código.

// Define a custom section programmatically.
static void CreateSection()
{
    try
    {
        CustomSection customSection;

        // Get the current configuration file.
        System.Configuration.Configuration config =
                ConfigurationManager.OpenExeConfiguration(
                ConfigurationUserLevel.None);

        // Create the section entry  
        // in the <configSections> and the 
        // related target section in <configuration>.
        // Call it "CustomSection2" since the file in this 
        // example already has "CustomSection".
        if (config.Sections["CustomSection"] == null)
        {
            customSection = new CustomSection();
            config.Sections.Add("CustomSection2", customSection);
            customSection.SectionInformation.ForceSave = true;
            config.Save(ConfigurationSaveMode.Full);
        }
    }
    catch (ConfigurationErrorsException err)
    {
        Console.WriteLine(err.ToString());
    }
}
' Create a custom section.
Shared Sub CreateSection()
    Try
        Dim customSection As CustomSection

        ' Get the current configuration file.
        Dim config As System.Configuration.Configuration = _
            ConfigurationManager.OpenExeConfiguration( _
            ConfigurationUserLevel.None)

        ' Create the section entry  
        ' in the <configSections> and the 
        ' related target section in <configuration>.
        ' Since the config file already has "CustomSection",
        ' call this one "CustomSection2".
        If config.Sections("CustomSection") Is Nothing Then
            customSection = New CustomSection()
            config.Sections.Add("CustomSection", customSection)
            customSection.SectionInformation.ForceSave = True
            config.Save(ConfigurationSaveMode.Full)
        End If
    Catch err As ConfigurationErrorsException
        Console.WriteLine(err.ToString())
    End Try
End Sub

Comentarios

En el caso de un simple ConfigurationElement, como el CustomSection que se muestra en el ejemplo siguiente, los ConfigurationProperty objetos representan atributos como fileName.

En el caso de elementos de configuración más complejos, como una sección que contiene subsecciones, por ejemplo authentication, los ConfigurationProperty objetos pueden representar ConfigurationElement objetos, así como atributos.

La ConfigurationPropertyCollection clase representa la colección de los ConfigurationProperty objetos que pueden ser atributos o ConfigurationElement objetos de un elemento de configuración.

La ConfigurationProperty clase representa un valor de configuración individual. Esta clase permite obtener o establecer el nombre, el tipo y el valor predeterminado de una entidad de configuración determinada (atributo o elemento) y especificar si el atributo es necesario, es una clave de elemento o representa una colección de elementos predeterminada.

Notas a los desarrolladores de herederos

Cada ConfigurationElement objeto crea una colección interna ConfigurationPropertyCollection de ConfigurationProperty objetos que representa los atributos de elemento o una colección de elementos secundarios.

La información y la funcionalidad no personalizables están contenidas en un ElementInformation objeto proporcionado por la ElementInformation propiedad .

Puede usar un modelo de codificación mediante programación o declarativo (con atributos) para crear un elemento de configuración personalizado.

  • Modelo de programación. Este modelo requiere que cree una propiedad para cada atributo de elemento 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 elemento 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 de elemento automáticamente y realiza la inicialización necesaria.

Constructores

ConfigurationProperty(String, Type)

Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.

Inicializa una nueva instancia de la clase ConfigurationProperty.

ConfigurationProperty(String, Type, Object)

Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.

Inicializa una nueva instancia de la clase ConfigurationProperty.

ConfigurationProperty(String, Type, Object, ConfigurationPropertyOptions)

Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.

Inicializa una nueva instancia de la clase ConfigurationProperty.

ConfigurationProperty(String, Type, Object, TypeConverter, ConfigurationValidatorBase, ConfigurationPropertyOptions)

Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.

Inicializa una nueva instancia de la clase ConfigurationProperty.

ConfigurationProperty(String, Type, Object, TypeConverter, ConfigurationValidatorBase, ConfigurationPropertyOptions, String)

Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.

Inicializa una nueva instancia de la clase ConfigurationProperty.

Propiedades

Converter

Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.

Obtiene el objeto TypeConverter que se ha utilizado para convertir este objeto ConfigurationProperty en la representación XML que se escribe en el archivo de configuración.

DefaultValue

Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.

Obtiene el valor predeterminado para esta propiedad ConfigurationProperty.

Description

Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.

Obtiene la descripción asociada al objeto ConfigurationProperty.

IsAssemblyStringTransformationRequired

Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.

Indica si el nombre de ensamblado para la propiedad de configuración requiere la transformación cuando se serializa para una versión anterior de .NET Framework.

IsDefaultCollection

Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.

Obtiene un valor que indica si la propiedad es la colección predeterminada de un elemento.

IsKey

Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.

Obtiene un valor que indica si este objeto ConfigurationProperty es la clave para el objeto ConfigurationElement contenedor.

IsRequired

Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.

Obtiene un valor que indica si es necesario este objeto ConfigurationProperty.

IsTypeStringTransformationRequired

Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.

Indica si el nombre de tipo para la propiedad de configuración requiere la transformación cuando se serializa para una versión anterior de .NET Framework.

IsVersionCheckRequired

Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.

Indica si la sección de configuración principal de la propiedad de configuración se debe consultar en el momento de la serialización para determinar si la propiedad de configuración se debe serializar en XML.

Name

Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.

Obtiene el nombre de ConfigurationProperty.

Type

Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.

Obtiene el tipo de este objeto ConfigurationProperty.

Validator

Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.

Obtiene el validador ConfigurationValidatorAttribute que se utiliza para validar este objeto ConfigurationProperty.

Métodos

Equals(Object)

Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetHashCode()

Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a

Consulte también