Číst v angličtině

Sdílet prostřednictvím


ConfigurationElement Třída

Definice

Představuje konfigurační prvek v konfiguračním souboru.

public abstract class ConfigurationElement
Dědičnost
ConfigurationElement
Odvozené

Příklady

Následující příklad kódu ukazuje, jak implementovat vlastní ConfigurationElement jako jednotlivý prvek ve vlastním oddílu a jako kolekci elementů ve vlastním oddílu. Příklad se skládá z následujících souborů:

  • Soubor app.config, který obsahuje vlastní oddíl s názvem MyUrls. Tento oddíl obsahuje jednoduchý element (neobsahuje žádné další prvky) a kolekci elementů. Jednoduchý element má název simple a kolekce má název urls.

  • Konzolová aplikace. Aplikace přečte obsah souboru app.config a zapíše informace do konzoly nástroje . Používá třídy, které jsou odvozeny z ConfigurationElement, ConfigurationElementCollectiona ConfigurationSection.

  • Třída s názvem UrlsSection , která je odvozena ConfigurationSection z třídy. Tato třída se používá pro přístup k oddílu MyUrls v konfiguračním souboru.

  • Třída s názvem UrlsCollection , která je odvozena ConfigurationElementCollection z třídy. Tato třída se používá pro přístup ke kolekci urls v konfiguračním souboru.

  • Třída s názvem UrlConfigElement , která je odvozena ConfigurationElement z třídy. Tato třída se používá pro přístup k elementu simple a členům urls kolekce v konfiguračním souboru.

Pokud chcete spustit příklad, proveďte následující kroky:

  1. Vytvořte řešení, které má projekt konzolové aplikace a projekt knihovny tříd s názvem ConfigurationElement.

  2. Vložte tři soubory tříd do projektu knihovny tříd a ostatní soubory vložte do projektu knihovny konzoly.

  3. V obou projektech nastavte odkaz na System.Configuration.

  4. V projektu konzolové aplikace nastavte odkaz na projekt knihovny tříd.

// 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;
        }
    }
}

Poznámky

The ConfigurationElement je abstraktní třída, která se používá k reprezentaci elementu XML v konfiguračním souboru (například Web.config). Prvek v konfiguračním souboru může obsahovat nula, jeden nebo více podřízených elementů.

Vzhledem k tomu, že ConfigurationElement třída je definována jako abstraktní, nemůžete vytvořit jeho instanci. Můžete z něj odvodit pouze třídy. Rozhraní .NET Framework obsahuje třídy, které jsou odvozeny z ConfigurationElement třídy, aby představovaly standardní elementy konfigurace XML, například ConfigurationSection. Třídu můžete také rozšířit o ConfigurationElement přístup k vlastním prvkům a oddílům konfigurace. Příklad uvedený dále v tomto tématu ukazuje, jak získat přístup k vlastním prvkům a oddílům konfigurace pomocí vlastních tříd odvozených z ConfigurationElement.

Můžete také rozšířit standardní typy konfigurace, jako ConfigurationElementjsou , ConfigurationElementCollectionConfigurationProperty, a ConfigurationSection. Další informace najdete v dokumentaci k těmto třídám.

Další informace o tom, jak získat přístup k informacím v konfiguračních souborech, najdete v ConfigurationManager tématu třída a WebConfigurationManager třída.

Poznámky pro implementátory

Každý ConfigurationElement objekt vytvoří interní ConfigurationPropertyCollection kolekci ConfigurationProperty objektů, která představuje buď atributy elementu, nebo kolekci podřízených elementů.

Neuzpůsobitelné informace a funkce jsou obsaženy objektem poskytovaným ElementInformationElementInformation vlastností .

K vytvoření vlastního elementu konfigurace můžete použít buď programový model, nebo model deklarativního kódování (s atributy):

  • Programový model vyžaduje, abyste pro každý atribut prvku vytvořili vlastnost pro získání nebo nastavení jeho hodnoty a přidali ji do interního kontejneru vlastností základní ConfigurationElement třídy. Příklad použití tohoto modelu najdete ve ConfigurationSection třídě .

  • Jednodušší deklarativní model, označovaný také jako model s atributy, umožňuje definovat atribut elementu pomocí vlastnosti a pak ho ozdobit atributy. Tyto atributy instruují konfigurační systém ASP.NET o typech vlastností a jejich výchozích hodnotách. S těmito informacemi získanými reflexí konfigurační systém ASP.NET vytvoří objekty vlastností elementu za vás a provede požadovanou inicializaci. Příklad uvedený dále v tomto tématu ukazuje, jak tento model používat.

Konstruktory

ConfigurationElement()

Inicializuje novou instanci ConfigurationElement třídy.

Vlastnosti

CurrentConfiguration

Získá odkaz na instanci nejvyšší úrovně Configuration , která představuje hierarchii konfigurace, do které aktuální ConfigurationElement instance patří.

ElementInformation

Získá ElementInformation objekt, který obsahuje přizpůsobitelné informace a funkce objektu ConfigurationElement .

ElementProperty

ConfigurationElementProperty Získá objekt, který představuje ConfigurationElement samotný objekt.

EvaluationContext

ContextInformation Získá objekt pro ConfigurationElement objekt.

HasContext

Získá hodnotu, která označuje, zda CurrentConfiguration je nullvlastnost .

Item[ConfigurationProperty]

Získá nebo nastaví vlastnost nebo atribut tohoto elementu konfigurace.

Item[String]

Získá nebo nastaví vlastnost, atribut nebo podřízený prvek tohoto elementu konfigurace.

LockAllAttributesExcept

Získá kolekci uzamčených atributů.

LockAllElementsExcept

Získá kolekci uzamčených prvků.

LockAttributes

Získá kolekci uzamčených atributů.

LockElements

Získá kolekci uzamčených prvků.

LockItem

Získá nebo nastaví hodnotu označující, zda je prvek uzamčen.

Properties

Získá kolekci vlastností.

Metody

DeserializeElement(XmlReader, Boolean)

Načte XML z konfiguračního souboru.

Equals(Object)

Porovná aktuální ConfigurationElement instanci se zadaným objektem.

GetHashCode()

Získá jedinečnou hodnotu představující aktuální ConfigurationElement instanci.

GetTransformedAssemblyString(String)

Vrátí transformovanou verzi zadaného názvu sestavení.

GetTransformedTypeString(String)

Vrátí transformovanou verzi zadaného názvu typu.

GetType()

Získá aktuální Type instanci.

(Zděděno od Object)
Init()

ConfigurationElement Nastaví objekt do počátečního stavu.

InitializeDefault()

Slouží k inicializaci výchozí sady hodnot objektu ConfigurationElement .

IsModified()

Určuje, zda byl tento konfigurační prvek změněn od posledního uložení nebo načtení, když byl implementován v odvozené třídě.

IsReadOnly()

Získá hodnotu označující, zda ConfigurationElement objekt je jen pro čtení.

ListErrors(IList)

Přidá do předaného seznamu chyby neplatné vlastnosti v tomto ConfigurationElement objektu a ve všech dílčích pomůcecích.

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
OnDeserializeUnrecognizedAttribute(String, String)

Získá hodnotu označující, zda je zjištěn neznámý atribut během deserializace.

OnDeserializeUnrecognizedElement(String, XmlReader)

Získá hodnotu označující, zda neznámý prvek je nalezen během deserializace.

OnRequiredPropertyNotFound(String)

Vyvolá výjimku, pokud není nalezena požadovaná vlastnost.

PostDeserialize()

Volá se po deserializaci.

PreSerialize(XmlWriter)

Volá se před serializací.

Reset(ConfigurationElement)

Resetuje vnitřní stav objektu ConfigurationElement , včetně zámků a kolekcí vlastností.

ResetModified()

Resetuje hodnotu IsModified() metody na false při implementaci v odvozené třídě.

SerializeElement(XmlWriter, Boolean)

Zapíše obsah tohoto konfiguračního prvku do konfiguračního souboru při implementaci v odvozené třídě.

SerializeToXmlElement(XmlWriter, String)

Zapíše vnější značky tohoto elementu konfigurace do konfiguračního souboru při implementaci v odvozené třídě.

SetPropertyValue(ConfigurationProperty, Object, Boolean)

Nastaví vlastnost na zadanou hodnotu.

SetReadOnly()

IsReadOnly() Nastaví vlastnost objektu ConfigurationElement a všech dílčích elementů.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)
Unmerge(ConfigurationElement, ConfigurationElement, ConfigurationSaveMode)

Upraví objekt tak, ConfigurationElement aby odebral všechny hodnoty, které by neměly být uloženy.

Platí pro

Produkt Verze
.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

Viz také