Compartilhar via


ConfigurationProperty Classe

Definição

Representa um atributo ou um filho de um elemento de configuração. Essa classe não pode ser herdada.

Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código.

public ref class ConfigurationProperty sealed
public sealed class ConfigurationProperty
type ConfigurationProperty = class
Public NotInheritable Class ConfigurationProperty
Herança
ConfigurationProperty

Exemplos

  1. O exemplo de código a seguir mostra como usar o ConfigurationProperty quando você cria uma seção 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

Veja a seguir um trecho do arquivo de configuração usado pelo código no exemplo 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>

O exemplo a seguir mostra como criar a seção anterior no 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

Comentários

No caso de um simples ConfigurationElement, como o CustomSection mostrado no próximo exemplo, os ConfigurationProperty objetos representam atributos como fileName.

No caso de elementos de configuração mais complexos, como uma seção que contém subseções, por exemplo authentication, , os ConfigurationProperty objetos podem representar ConfigurationElement objetos, bem como atributos.

A ConfigurationPropertyCollection classe representa a coleção dos ConfigurationProperty objetos que podem ser atributos ou ConfigurationElement objetos de um elemento de configuração.

A ConfigurationProperty classe representa uma configuração individual. Essa classe permite que você obtenha ou defina o nome, o tipo e o valor padrão de uma entidade de configuração específica (atributo ou elemento) e especifique se o atributo é necessário, é uma chave de elemento ou representa uma coleção de elementos padrão.

Notas aos Herdeiros

Cada ConfigurationElement objeto cria uma coleção interna ConfigurationPropertyCollection de ConfigurationProperty objetos que representa os atributos de elemento ou uma coleção de elementos filho.

Informações e funcionalidades não personalizáveis estão contidas em um ElementInformation objeto fornecido pela ElementInformation propriedade .

Você pode usar um modelo de codificação programático ou declarativo (atribuído) para criar um elemento de configuração personalizado.

  • Modelo programático. Esse modelo exige que você crie uma propriedade para cada atributo de elemento para obter e/ou definir seu valor e adicioná-lo ao recipiente de propriedades interno da classe base subjacente ConfigurationElement .

  • Modelo Declarativo. Esse modelo mais simples, também chamado de modelo atribuído, permite definir um atributo de elemento usando uma propriedade e decorá-lo com atributos. Esses atributos instruem o sistema de configuração ASP.NET sobre os tipos de propriedade e seus valores padrão. Com essas informações, obtidas por meio da reflexão, o sistema de configuração de ASP.NET cria os objetos de propriedade do elemento para você e executa a inicialização necessária.

Construtores

ConfigurationProperty(String, Type)

Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código.

Inicializa uma nova instância da classe ConfigurationProperty.

ConfigurationProperty(String, Type, Object)

Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código.

Inicializa uma nova instância da classe ConfigurationProperty.

ConfigurationProperty(String, Type, Object, ConfigurationPropertyOptions)

Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código.

Inicializa uma nova instância da classe ConfigurationProperty.

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

Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código.

Inicializa uma nova instância da classe ConfigurationProperty.

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

Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código.

Inicializa uma nova instância da classe ConfigurationProperty.

Propriedades

Converter

Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código.

Obtém o TypeConverter usado para converter esse ConfigurationProperty em uma representação XML para gravar no arquivo de configuração.

DefaultValue

Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código.

Obtém o valor padrão desta propriedade ConfigurationProperty.

Description

Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código.

Obtém a descrição associada ao ConfigurationProperty.

IsAssemblyStringTransformationRequired

Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código.

Indica se o nome do assembly para a propriedade de configuração requer transformação quando ele é serializado para uma versão anterior do .NET Framework.

IsDefaultCollection

Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código.

Obtém um valor que indica se a propriedade é a coleção padrão de um elemento.

IsKey

Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código.

Obtém um valor que indica se esta ConfigurationProperty é a chave para o objeto ConfigurationElement que a contém.

IsRequired

Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código.

Obtém um valor que indica se esta ConfigurationProperty é necessária.

IsTypeStringTransformationRequired

Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código.

Indica se o nome do tipo para a propriedade de configuração requer transformação quando ele é serializado para uma versão anterior do .NET Framework.

IsVersionCheckRequired

Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código.

Indica se a seção de configuração pai da propriedade de configuração é consultada no tempo de serialização para determinar se a propriedade de configuração deve ser serializada em XML.

Name

Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código.

Obtém o nome deste ConfigurationProperty.

Type

Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código.

Obtém o tipo desse objeto ConfigurationProperty.

Validator

Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código.

Obtém o ConfigurationValidatorAttribute, que é usado para validar esse objeto ConfigurationProperty.

Métodos

Equals(Object)

Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código.

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código.

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código.

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código.

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código.

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Confira também