Ler em inglês

Compartilhar via


ConfigurationElement Classe

Definição

Representa um elemento de configuração em um arquivo de configuração.

public abstract class ConfigurationElement
Herança
ConfigurationElement
Derivado

Exemplos

O exemplo de código a seguir mostra como implementar um personalizado ConfigurationElement como um elemento individual em uma seção personalizada e como uma coleção de elementos em uma seção personalizada. O exemplo consiste nos seguintes arquivos:

  • Um arquivo app.config que contém uma seção personalizada chamada MyUrls. Esta seção contém um elemento simples (não contém nenhum outro elemento) e uma coleção de elementos. O elemento simples é nomeado simple e a coleção é chamada urlsde .

  • Um aplicativo de console. O aplicativo lê o conteúdo do arquivo app.config e grava as informações no console. Ele usa classes que derivam de ConfigurationElement, ConfigurationElementCollectione ConfigurationSection.

  • Uma classe chamada UrlsSection que deriva da ConfigurationSection classe . Essa classe é usada para acessar a MyUrls seção no arquivo de configuração.

  • Uma classe chamada UrlsCollection que deriva da ConfigurationElementCollection classe . Essa classe é usada para acessar a urls coleção no arquivo de configuração.

  • Uma classe chamada UrlConfigElement que deriva da ConfigurationElement classe . Essa classe é usada para acessar o simple elemento e os membros da urls coleção no arquivo de configuração.

Para executar o exemplo, execute as seguintes etapas:

  1. Crie uma solução que tenha um projeto de aplicativo de console e um projeto de biblioteca de classes chamado ConfigurationElement.

  2. Coloque os três arquivos de classe no projeto da biblioteca de classes e coloque os outros arquivos no projeto da biblioteca de console.

  3. Em ambos os projetos, defina uma referência como System.Configuration.

  4. No projeto de aplicativo de console, defina uma referência de projeto para o projeto de biblioteca de classes.

// Set Assembly name to ConfigurationElement
using System;
using System.Configuration;
using System.Collections;

namespace Samples.AspNet
{
    // Entry point for console application that reads the 
    // app.config file and writes to the console the 
    // URLs in the custom section.  
    class TestConfigurationElement
    {
        static void Main(string[] args)
        {
            // Get current configuration file.
            System.Configuration.Configuration config =
                ConfigurationManager.OpenExeConfiguration(
                ConfigurationUserLevel.None);

            // Get the MyUrls section.
            UrlsSection myUrlsSection =
                config.GetSection("MyUrls") as UrlsSection;

            if (myUrlsSection == null)
            {
                Console.WriteLine("Failed to load UrlsSection.");
            }
            else
            {
                Console.WriteLine("The 'simple' element of app.config:");
                Console.WriteLine("  Name={0} URL={1} Port={2}",
                    myUrlsSection.Simple.Name,
                    myUrlsSection.Simple.Url,
                    myUrlsSection.Simple.Port);

                Console.WriteLine("The urls collection of app.config:");
                for (int i = 0; i < myUrlsSection.Urls.Count; i++)
                {
                    Console.WriteLine("  Name={0} URL={1} Port={2}",
                        myUrlsSection.Urls[i].Name,
                        myUrlsSection.Urls[i].Url,
                        myUrlsSection.Urls[i].Port);
                }
            }
            Console.ReadLine();
        }
    }
}
using System;
using System.Configuration;
using System.Collections;

namespace Samples.AspNet
{
    // Define a custom section containing an individual
    // element and a collection of elements.
    public class UrlsSection : ConfigurationSection
    {
        [ConfigurationProperty("name", 
            DefaultValue = "MyFavorites",
            IsRequired = true, 
            IsKey = false)]
        [StringValidator(InvalidCharacters = 
            " ~!@#$%^&*()[]{}/;'\"|\\",
            MinLength = 1, MaxLength = 60)]
        public string Name
        {

            get
            {
                return (string)this["name"];
            }
            set
            {
                this["name"] = value;
            }
        }

        // Declare an element (not in a collection) of the type
        // UrlConfigElement. In the configuration
        // file it corresponds to <simple .... />.
        [ConfigurationProperty("simple")]
        public UrlConfigElement Simple
        {
            get
            {
                UrlConfigElement url =
                (UrlConfigElement)base["simple"];
                return url;
            }
        }

        // Declare a collection element represented 
        // in the configuration file by the sub-section
        // <urls> <add .../> </urls> 
        // Note: the "IsDefaultCollection = false" 
        // instructs the .NET Framework to build a nested 
        // section like <urls> ...</urls>.
        [ConfigurationProperty("urls",
            IsDefaultCollection = false)]
        public UrlsCollection Urls
        {
            get
            {
                UrlsCollection urlsCollection =
                (UrlsCollection)base["urls"];
                return urlsCollection;
            }
        }

        protected override void DeserializeSection(
            System.Xml.XmlReader reader)
        {
            base.DeserializeSection(reader);
            // You can add custom processing code here.
        }

        protected override string SerializeSection(
            ConfigurationElement parentElement,
            string name, ConfigurationSaveMode saveMode)
        {
            string s =
                base.SerializeSection(parentElement,
                name, saveMode);
            // You can add custom processing code here.
            return s;
        }
    }
}
using System;
using System.Configuration;
using System.Collections;

namespace Samples.AspNet
{
    public class UrlsCollection : ConfigurationElementCollection
    {
        public UrlsCollection()
        {
            // Add one url to the collection.  This is
            // not necessary; could leave the collection 
            // empty until items are added to it outside
            // the constructor.
            UrlConfigElement url = 
                (UrlConfigElement)CreateNewElement();
            Add(url);
        }

        public override 
            ConfigurationElementCollectionType CollectionType
        {
            get
            {
                return 

                    ConfigurationElementCollectionType.AddRemoveClearMap;
            }
        }

        protected override 
            ConfigurationElement CreateNewElement()
        {
            return new UrlConfigElement();
        }

        protected override 
            ConfigurationElement CreateNewElement(
            string elementName)
        {
            return new UrlConfigElement(elementName);
        }

        protected override Object 
            GetElementKey(ConfigurationElement element)
        {
            return ((UrlConfigElement)element).Name;
        }

        public new string AddElementName
        {
            get
            { return base.AddElementName; }

            set
            { base.AddElementName = value; }
        }

        public new string ClearElementName
        {
            get
            { return base.ClearElementName; }

            set
            { base.ClearElementName = value; }
        }

        public new string RemoveElementName
        {
            get
            { return base.RemoveElementName; }
        }

        public new int Count
        {
            get { return base.Count; }
        }

        public UrlConfigElement this[int index]
        {
            get
            {
                return (UrlConfigElement)BaseGet(index);
            }
            set
            {
                if (BaseGet(index) != null)
                {
                    BaseRemoveAt(index);
                }
                BaseAdd(index, value);
            }
        }

        new public UrlConfigElement this[string Name]
        {
            get
            {
                return (UrlConfigElement)BaseGet(Name);
            }
        }

        public int IndexOf(UrlConfigElement url)
        {
            return BaseIndexOf(url);
        }

        public void Add(UrlConfigElement url)
        {
            BaseAdd(url);
            // Add custom code here.
        }

        protected override void 
            BaseAdd(ConfigurationElement element)
        {
            BaseAdd(element, false);
            // Add custom code here.
        }

        public void Remove(UrlConfigElement url)
        {
            if (BaseIndexOf(url) >= 0)
                BaseRemove(url.Name);
        }

        public void RemoveAt(int index)
        {
            BaseRemoveAt(index);
        }

        public void Remove(string name)
        {
            BaseRemove(name);
        }

        public void Clear()
        {
            BaseClear();
            // Add custom code here.
        }
    }
}
using System;
using System.Configuration;
using System.Collections;

namespace Samples.AspNet
{
    public class UrlConfigElement : ConfigurationElement
    {
        // Constructor allowing name, url, and port to be specified.
        public UrlConfigElement(String newName,
            String newUrl, int newPort)
        {
            Name = newName;
            Url = newUrl;
            Port = newPort;
        }

        // Default constructor, will use default values as defined
        // below.
        public UrlConfigElement()
        {
        }

        // Constructor allowing name to be specified, will take the
        // default values for url and port.
        public UrlConfigElement(string elementName)
        {
            Name = elementName;
        }

        [ConfigurationProperty("name", 
            DefaultValue = "Microsoft",
            IsRequired = true, 
            IsKey = true)]
        public string Name
        {
            get
            {
                return (string)this["name"];
            }
            set
            {
                this["name"] = value;
            }
        }

        [ConfigurationProperty("url",
            DefaultValue = "http://www.microsoft.com",
            IsRequired = true)]
        [RegexStringValidator(@"\w+:\/\/[\w.]+\S*")]
        public string Url
        {
            get
            {
                return (string)this["url"];
            }
            set
            {
                this["url"] = value;
            }
        }

        [ConfigurationProperty("port",
            DefaultValue = (int)0,
            IsRequired = false)]
        [IntegerValidator(MinValue = 0,
            MaxValue = 8080, ExcludeRange = false)]
        public int Port
        {
            get
            {
                return (int)this["port"];
            }
            set
            {
                this["port"] = value;
            }
        }

        protected override void DeserializeElement(
           System.Xml.XmlReader reader, 
            bool serializeCollectionKey)
        {
            base.DeserializeElement(reader, 
                serializeCollectionKey);
            // You can your custom processing code here.
        }

        protected override bool SerializeElement(
            System.Xml.XmlWriter writer, 
            bool serializeCollectionKey)
        {
            bool ret = base.SerializeElement(writer, 
                serializeCollectionKey);
            // You can enter your custom processing code here.
            return ret;
        }

        protected override bool IsModified()
        {
            bool ret = base.IsModified();
            // You can enter your custom processing code here.
            return ret;
        }
    }
}

Comentários

O ConfigurationElement é uma classe abstrata usada para representar um elemento XML em um arquivo de configuração (como Web.config). Um elemento em um arquivo de configuração pode conter zero, um ou mais elementos filho.

Como a ConfigurationElement classe é definida como abstrata, você não pode criar uma instância dela. Você só pode derivar classes dele. O .NET Framework inclui classes que derivam da ConfigurationElement classe para representar elementos de configuração XML padrão, como ConfigurationSection. Você também pode estender a ConfigurationElement classe para acessar seções e elementos de configuração personalizados. O exemplo incluído posteriormente neste tópico mostra como acessar elementos e seções de configuração personalizados usando classes personalizadas derivadas de ConfigurationElement.

Você também pode estender os tipos de configuração padrão, como ConfigurationElement, ConfigurationElementCollectionConfigurationProperty, e ConfigurationSection. Para obter mais informações, consulte a documentação dessas classes.

Para obter mais informações sobre como acessar informações em arquivos de configuração, consulte a ConfigurationManager classe e a WebConfigurationManager classe .

Notas aos Implementadores

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:

  • O modelo programático exige que, para cada atributo de elemento, você crie uma propriedade para obter ou definir seu valor e adicioná-la ao recipiente de propriedades interna da classe base subjacente ConfigurationElement . Para obter um exemplo de como usar esse modelo, consulte a ConfigurationSection classe .

  • O modelo declarativo mais simples, também chamado de modelo atribuído, permite que você defina um atributo de elemento usando uma propriedade e, em seguida, decore-o 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. O exemplo mostrado posteriormente neste tópico mostra como usar esse modelo.

Construtores

ConfigurationElement()

Inicializa uma nova instância da classe ConfigurationElement.

Propriedades

CurrentConfiguration

Obtém uma referência para a instância Configuration de nível superior que representa a hierarquia de configuração à qual a instância atual ConfigurationElement pertence.

ElementInformation

Obtém um objeto ElementInformation que contém as informações não personalizáveis e a funcionalidade do objeto ConfigurationElement.

ElementProperty

Obtém o objeto ConfigurationElementProperty que representa o próprio objeto ConfigurationElement.

EvaluationContext

Obtém o objeto ContextInformation para o objeto ConfigurationElement.

HasContext

Obtém um valor que indica se a propriedade CurrentConfiguration é null.

Item[ConfigurationProperty]

Obtém ou define uma propriedade ou um atributo desse elemento de configuração.

Item[String]

Obtém ou define uma propriedade, atributo ou elemento filho desse elemento de configuração.

LockAllAttributesExcept

Obtém a coleção de atributos bloqueados.

LockAllElementsExcept

Obtém a coleção de elementos bloqueados.

LockAttributes

Obtém a coleção de atributos bloqueados.

LockElements

Obtém a coleção de elementos bloqueados.

LockItem

Obtém ou define um valor que indica se o elemento está bloqueado.

Properties

Obtém a coleção de propriedades.

Métodos

DeserializeElement(XmlReader, Boolean)

Lê o XML do arquivo de configuração.

Equals(Object)

Compara a instância ConfigurationElement atual com o objeto especificado.

GetHashCode()

Obtém um valor exclusivo que representa a instância ConfigurationElement atual.

GetTransformedAssemblyString(String)

Retorna a versão transformada do nome do assembly especificado.

GetTransformedTypeString(String)

Retorna a versão transformada do nome do tipo especificado.

GetType()

Obtém o Type da instância atual.

(Herdado de Object)
Init()

Define o objeto ConfigurationElement para seu estado inicial.

InitializeDefault()

Usado para inicializar um conjunto padrão de valores para o objeto ConfigurationElement.

IsModified()

Indica se este elemento de configuração foi modificado desde a última vez em que foi salvo ou carregado quando implementado em uma classe derivada.

IsReadOnly()

Obtém um valor que indica se o objeto ConfigurationElement é somente leitura.

ListErrors(IList)

Adiciona os erros de propriedade inválida deste objeto ConfigurationElement e de todos os subelementos à lista passada.

MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
OnDeserializeUnrecognizedAttribute(String, String)

Obtém um valor que indica se um atributo desconhecido é encontrado durante a desserialização.

OnDeserializeUnrecognizedElement(String, XmlReader)

Obtém um valor que indica se um elemento desconhecido é encontrado durante a desserialização.

OnRequiredPropertyNotFound(String)

Gera uma exceção quando uma propriedade necessária não é encontrada.

PostDeserialize()

Chamado depois da desserialização.

PreSerialize(XmlWriter)

Chamado antes da serialização.

Reset(ConfigurationElement)

Redefine o estado interno do objeto ConfigurationElement, incluindo os bloqueios e as coleções de propriedades.

ResetModified()

Redefine o valor do método IsModified() para false quando implementado em uma classe derivada.

SerializeElement(XmlWriter, Boolean)

Grava o conteúdo desse elemento de configuração no arquivo de configuração quando implementado em uma classe derivada.

SerializeToXmlElement(XmlWriter, String)

Grava as marcas externas desse elemento de configuração no arquivo de configuração quando implementado em uma classe derivada.

SetPropertyValue(ConfigurationProperty, Object, Boolean)

Define uma propriedade para o valor especificado.

SetReadOnly()

Define a propriedade IsReadOnly() para o objeto ConfigurationElement e para todos os subelementos.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)
Unmerge(ConfigurationElement, ConfigurationElement, ConfigurationSaveMode)

Modifica o objeto ConfigurationElement para remover todos os valores que não devem ser salvos.

Aplica-se a

Produto Versões
.NET 8 (package-provided), 9 (package-provided)
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7 (package-provided), 4.7, 4.7.1 (package-provided), 4.7.1, 4.7.2 (package-provided), 4.7.2, 4.8 (package-provided), 4.8, 4.8.1
.NET Standard 2.0 (package-provided)
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9

Confira também