İngilizce dilinde oku

Aracılığıyla paylaş


ConfigurationElement Sınıf

Tanım

Yapılandırma dosyasındaki bir yapılandırma öğesini temsil eder.

C#
public abstract class ConfigurationElement
Devralma
ConfigurationElement
Türetilmiş

Örnekler

Aşağıdaki kod örneği, özel bir bölümün hem tek bir öğesi hem de özel ConfigurationElement bir bölümdeki öğe koleksiyonu olarak özel bir uygulamanın nasıl yapıldığını gösterir. Örnek aşağıdaki dosyalardan oluşur:

  • adlı MyUrlsözel bölümü içeren bir app.config dosyası. Bu bölüm basit bir öğe (başka öğe içermez) ve bir öğe koleksiyonu içerir. Basit öğe adlandırılmıştır simple ve koleksiyon olarak adlandırılır urls.

  • Bir konsol uygulaması. Uygulama, app.config dosyasının içeriğini okur ve bilgileri konsola yazar. , ConfigurationElementCollectionve ConfigurationSection'den ConfigurationElementtüretilen sınıfları kullanır.

  • sınıfından türetilen ConfigurationSection adlı UrlsSection bir sınıf. Bu sınıf, yapılandırma dosyasındaki bölüme MyUrls erişmek için kullanılır.

  • sınıfından türetilen ConfigurationElementCollection adlı UrlsCollection bir sınıf. Bu sınıf, yapılandırma dosyasındaki koleksiyona urls erişmek için kullanılır.

  • sınıfından türetilen ConfigurationElement adlı UrlConfigElement bir sınıf. Bu sınıf, öğesine ve yapılandırma dosyasındaki koleksiyonun üyelerine urls erişmek simple için kullanılır.

Örneği çalıştırmak için aşağıdaki adımları uygulayın:

  1. konsol uygulaması projesine ve adlı ConfigurationElementbir sınıf kitaplığı projesine sahip bir çözüm oluşturun.

  2. Üç sınıf dosyasını sınıf kitaplığı projesine yerleştirin ve diğer dosyaları konsol kitaplığı projesine yerleştirin.

  3. Her iki projede de için System.Configurationbir başvuru ayarlayın.

  4. Konsol uygulaması projesinde, sınıf kitaplığı projesine bir proje başvurusu ayarlayın.

C#
// 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();
        }
    }
}
C#
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;
        }
    }
}
C#
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.
        }
    }
}
C#
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;
        }
    }
}

Açıklamalar

ConfigurationElement, yapılandırma dosyasındaki bir XML öğesini (Web.config gibi) temsil etmek için kullanılan soyut bir sınıftır. Yapılandırma dosyasındaki bir öğe sıfır, bir veya daha fazla alt öğe içerebilir.

Sınıf soyut olarak tanımlandığından ConfigurationElement , bunun bir örneğini oluşturamazsınız. Bundan yalnızca sınıflar türetebilirsiniz. .NET Framework, gibi ConfigurationSectionstandart XML yapılandırma öğelerini temsil etmek için sınıfından ConfigurationElement türetilen sınıflar içerir. Ayrıca sınıfını ConfigurationElement özel yapılandırma öğelerine ve bölümlerine erişecek şekilde genişletebilirsiniz. Bu konunun ilerleyen bölümlerinde yer alan örnekte, öğesinden ConfigurationElementtüretilen özel sınıflar kullanılarak özel yapılandırma öğelerine ve bölümlerine nasıl erişilir gösterilmektedir.

, , ConfigurationElementCollectionConfigurationPropertyve ConfigurationSectiongibi ConfigurationElementstandart yapılandırma türlerini de genişletebilirsiniz. Daha fazla bilgi için bu sınıfların belgelerine bakın.

Yapılandırma dosyalarındaki bilgilere erişme hakkında daha fazla bilgi için sınıfına ConfigurationManager ve sınıfına WebConfigurationManager bakın.

Uygulayanlara Notlar

Her ConfigurationElement nesne, öğe özniteliklerini veya alt öğe koleksiyonunu temsil eden bir iç ConfigurationPropertyCollectionConfigurationProperty nesne koleksiyonu oluşturur.

Özelleştirilebilir olmayan bilgiler ve işlevler özelliği tarafından sağlanan bir ElementInformation nesne tarafından ElementInformation barındırılır.

Özel bir yapılandırma öğesi oluşturmak için program aracılığıyla veya bildirim temelli (öznitelikli) bir kodlama modeli kullanabilirsiniz:

  • Programlı model, her öğe özniteliği için değerini almak veya ayarlamak için bir özellik oluşturmanızı ve bunu temel alınan ConfigurationElement temel sınıfın iç özellik paketine eklemenizi gerektirir. Bu modelin nasıl kullanılacağına ilişkin bir örnek için sınıfına ConfigurationSection bakın.

  • Öznitelikli model olarak da adlandırılan daha basit bildirim temelli model, bir özellik kullanarak bir öğe özniteliği tanımlamanıza ve ardından özniteliklerle süslemenize olanak tanır. Bu öznitelikler, ASP.NET yapılandırma sistemine özellik türleri ve varsayılan değerleri hakkında bilgi verir. Yansıma yoluyla elde edilen bu bilgilerle, ASP.NET yapılandırma sistemi sizin için öğe özelliği nesnelerini oluşturur ve gerekli başlatmayı gerçekleştirir. Bu konunun ilerleyen bölümlerinde gösterilen örnekte bu modelin nasıl kullanılacağı gösterilmektedir.

Oluşturucular

ConfigurationElement()

ConfigurationElement sınıfının yeni bir örneğini başlatır.

Özellikler

CurrentConfiguration

Geçerli ConfigurationElement örneğin ait olduğu yapılandırma hiyerarşisini temsil eden en üst düzey Configuration örneğe başvuru alır.

ElementInformation

Nesnenin özelleştirilebilir olmayan bilgilerini ve işlevselliğini ConfigurationElement içeren bir ElementInformation nesnesi alır.

ElementProperty

Nesnenin ConfigurationElementProperty kendisini temsil ConfigurationElement eden nesneyi alır.

EvaluationContext

Nesnenin ContextInformation nesnesini ConfigurationElement alır.

HasContext

özelliğinin nullolup olmadığını CurrentConfiguration gösteren bir değer alır.

Item[ConfigurationProperty]

Bu yapılandırma öğesinin özelliğini veya özniteliğini alır veya ayarlar.

Item[String]

Bu yapılandırma öğesinin bir özelliğini, özniteliğini veya alt öğesini alır veya ayarlar.

LockAllAttributesExcept

Kilitli özniteliklerin koleksiyonunu alır.

LockAllElementsExcept

Kilitli öğeler koleksiyonunu alır.

LockAttributes

Kilitli özniteliklerin koleksiyonunu alır.

LockElements

Kilitli öğeler koleksiyonunu alır.

LockItem

Öğesinin kilitli olup olmadığını belirten bir değer alır veya ayarlar.

Properties

Özellik koleksiyonunu alır.

Yöntemler

DeserializeElement(XmlReader, Boolean)

Yapılandırma dosyasından XML okur.

Equals(Object)

Geçerli ConfigurationElement örneği belirtilen nesneyle karşılaştırır.

GetHashCode()

Geçerli ConfigurationElement örneği temsil eden benzersiz bir değer alır.

GetTransformedAssemblyString(String)

Belirtilen derleme adının dönüştürülmüş sürümünü döndürür.

GetTransformedTypeString(String)

Belirtilen tür adının dönüştürülmüş sürümünü döndürür.

GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
Init()

ConfigurationElement Nesneyi ilk durumuna ayarlar.

InitializeDefault()

Nesne için varsayılan değer kümesini başlatmak için ConfigurationElement kullanılır.

IsModified()

Bu yapılandırma öğesinin türetilmiş bir sınıfta uygulandığında son kaydedildiğinden veya yüklendiğinden beri değiştirilip değiştirilmediğini gösterir.

IsReadOnly()

Nesnenin ConfigurationElement salt okunur olup olmadığını belirten bir değer alır.

ListErrors(IList)

Bu ConfigurationElement nesnedeki ve tüm alt öğelerdeki invalid-property hatalarını geçirilen listeye ekler.

MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
OnDeserializeUnrecognizedAttribute(String, String)

Seri durumdan çıkarma sırasında bilinmeyen bir öznitelikle karşılaşılıp karşılaşılmadığını belirten bir değer alır.

OnDeserializeUnrecognizedElement(String, XmlReader)

Seri durumdan çıkarma sırasında bilinmeyen bir öğeyle karşılaşılıp karşılaşılmadığını belirten bir değer alır.

OnRequiredPropertyNotFound(String)

Gerekli bir özellik bulunamadığında bir özel durum oluşturur.

PostDeserialize()

Seri durumdan çıkarıldıktan sonra çağrılır.

PreSerialize(XmlWriter)

Serileştirmeden önce çağrılır.

Reset(ConfigurationElement)

Kilitler ve özellik koleksiyonları dahil olmak üzere nesnenin iç durumunu ConfigurationElement sıfırlar.

ResetModified()

Türetilmiş bir sınıfta uygulandığında yönteminin IsModified()false değerini olarak sıfırlar.

SerializeElement(XmlWriter, Boolean)

Türetilmiş bir sınıfta uygulandığında bu yapılandırma öğesinin içeriğini yapılandırma dosyasına yazar.

SerializeToXmlElement(XmlWriter, String)

Türetilmiş bir sınıfta uygulandığında bu yapılandırma öğesinin dış etiketlerini yapılandırma dosyasına yazar.

SetPropertyValue(ConfigurationProperty, Object, Boolean)

Bir özelliği belirtilen değere ayarlar.

SetReadOnly()

IsReadOnly() Nesnenin ve tüm alt öğelerinin ConfigurationElement özelliğini ayarlar.

ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)
Unmerge(ConfigurationElement, ConfigurationElement, ConfigurationSaveMode)

ConfigurationElement Kaydedilmemesi gereken tüm değerleri kaldırmak için nesnesini değiştirir.

Şunlara uygulanır

Ürün Sürümler
.NET 8 (package-provided), 9 (package-provided), 10 (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, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0 (package-provided)
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10

Ayrıca bkz.