Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

ConfigurationElementCollection-Klasse

 

Veröffentlicht: Oktober 2016

Stellt ein Konfigurationselement dar, das eine Auflistung von untergeordneten Elementen enthält.

Namespace:   System.Configuration
Assembly:  System.Configuration (in System.Configuration.dll)

System.Object
  System.Configuration.ConfigurationElement
    System.Configuration.ConfigurationElementCollection
      System.Configuration.ConnectionStringSettingsCollection
      System.Configuration.KeyValueConfigurationCollection
      System.Configuration.NameValueConfigurationCollection
      System.Configuration.ProviderSettingsCollection
      System.Configuration.SchemeSettingElementCollection
      System.Configuration.SettingElementCollection
      System.IdentityModel.Configuration.AudienceUriElementCollection
      System.IdentityModel.Configuration.IdentityConfigurationElementCollection
      System.IdentityModel.Configuration.SecurityTokenHandlerElementCollection
      System.IdentityModel.Configuration.SecurityTokenHandlerSetElementCollection
      System.IdentityModel.Services.Configuration.FederationConfigurationElementCollection
      System.Net.Configuration.AuthenticationModuleElementCollection
      System.Net.Configuration.BypassElementCollection
      System.Net.Configuration.ConnectionManagementElementCollection
      System.Net.Configuration.WebRequestModuleElementCollection
      System.Runtime.Caching.Configuration.MemoryCacheSettingsCollection
      System.Runtime.Serialization.Configuration.DeclaredTypeElementCollection
      System.Runtime.Serialization.Configuration.ParameterElementCollection
      System.Runtime.Serialization.Configuration.TypeElementCollection
      System.Security.Authentication.ExtendedProtection.Configuration.ServiceNameElementCollection
      System.ServiceModel.Activities.Tracking.Configuration.TrackingConfigurationCollection<TConfigurationElement>
      System.ServiceModel.Configuration.ServiceModelConfigurationElementCollection<ConfigurationElementType>
      System.ServiceModel.Routing.Configuration.BackupEndpointCollection
      System.ServiceModel.Routing.Configuration.BackupListCollection
      System.ServiceModel.Routing.Configuration.FilterElementCollection
      System.ServiceModel.Routing.Configuration.FilterTableCollection
      System.ServiceModel.Routing.Configuration.FilterTableEntryCollection
      System.ServiceModel.Routing.Configuration.NamespaceElementCollection
      System.Web.Configuration.AssemblyCollection
      System.Web.Configuration.AuthorizationRuleCollection
      System.Web.Configuration.BufferModesCollection
      System.Web.Configuration.BuildProviderCollection
      System.Web.Configuration.ClientTargetCollection
      System.Web.Configuration.CodeSubDirectoriesCollection
      System.Web.Configuration.CompilerCollection
      System.Web.Configuration.ConvertersCollection
      System.Web.Configuration.CustomErrorCollection
      System.Web.Configuration.EventMappingSettingsCollection
      System.Web.Configuration.ExpressionBuilderCollection
      System.Web.Configuration.FolderLevelBuildProviderCollection
      System.Web.Configuration.FormsAuthenticationUserCollection
      System.Web.Configuration.FullTrustAssemblyCollection
      System.Web.Configuration.HttpHandlerActionCollection
      System.Web.Configuration.HttpModuleActionCollection
      System.Web.Configuration.IgnoreDeviceFilterElementCollection
      System.Web.Configuration.NamespaceCollection
      System.Web.Configuration.OutputCacheProfileCollection
      System.Web.Configuration.PartialTrustVisibleAssemblyCollection
      System.Web.Configuration.ProfileGroupSettingsCollection
      System.Web.Configuration.ProfilePropertySettingsCollection
      System.Web.Configuration.ProfileSettingsCollection
      System.Web.Configuration.ProtocolCollection
      System.Web.Configuration.RuleSettingsCollection
      System.Web.Configuration.SqlCacheDependencyDatabaseCollection
      System.Web.Configuration.TagMapCollection
      System.Web.Configuration.TagPrefixCollection
      System.Web.Configuration.TransformerInfoCollection
      System.Web.Configuration.TrustLevelCollection
      System.Web.Configuration.UrlMappingCollection
      System.Web.Mobile.DeviceFilterElementCollection
      System.Web.Services.Configuration.ProtocolElementCollection
      System.Web.Services.Configuration.SoapExtensionTypeElementCollection
      System.Web.Services.Configuration.TypeElementCollection
      System.Web.Services.Configuration.WsiProfilesElementCollection
      System.Web.UI.MobileControls.ControlElementCollection
      System.Web.UI.MobileControls.DeviceElementCollection
      System.Workflow.Runtime.Configuration.WorkflowRuntimeServiceElementCollection
      System.Xml.Serialization.Configuration.SchemaImporterExtensionElementCollection

public abstract class ConfigurationElementCollection : ConfigurationElement, 
	ICollection, IEnumerable

NameBeschreibung
System_CAPS_protmethodConfigurationElementCollection()

Initialisiert eine neue Instanz der ConfigurationElementCollection-Klasse.

System_CAPS_protmethodConfigurationElementCollection(IComparer)

Erstellt eine neue Instanz der ConfigurationElementCollection-Klasse.

NameBeschreibung
System_CAPS_protpropertyAddElementName

Ruft ab oder legt den Namen der dem ConfigurationElement zugeordnet, das Hinzufügen eines Elements in der ConfigurationElementCollection beim Überschreiben in einer abgeleiteten Klasse.

System_CAPS_protpropertyClearElementName

Ruft ab oder legt den Namen für die ConfigurationElement Verknüpfen mit dem Löschvorgang in der ConfigurationElementCollection beim Überschreiben in einer abgeleiteten Klasse.

System_CAPS_pubpropertyCollectionType

Ruft den Typ des ConfigurationElementCollection ab.

System_CAPS_pubpropertyCount

Ruft die Anzahl der Elemente in der Auflistung ab.

System_CAPS_pubpropertyCurrentConfiguration

Ruft einen Verweis auf der obersten Ebene Configuration -Instanz, die die Konfigurationshierarchie darstellt, die die aktuelle ConfigurationElement -Instanz gehört.(Geerbt von „ConfigurationElement“.)

System_CAPS_pubpropertyElementInformation

Ruft ein ElementInformation Objekt, das die nicht anpassbaren Informationen und Funktionen von enthält die ConfigurationElement Objekt.(Geerbt von „ConfigurationElement“.)

System_CAPS_protpropertyElementName

Ruft den Namen zum Identifizieren dieser Auflistung von Elementen in der Konfigurationsdatei beim Überschreiben in einer abgeleiteten Klasse verwendet.

System_CAPS_protpropertyElementProperty

Ruft die ConfigurationElementProperty -Objekt, das darstellt, die ConfigurationElement Objekt selbst.(Geerbt von „ConfigurationElement“.)

System_CAPS_pubpropertyEmitClear

Ruft ab oder legt einen Wert, der angibt, ob die Auflistung gelöscht wurde.

System_CAPS_protpropertyEvaluationContext

Ruft das ContextInformation-Objekt für das ConfigurationElement-Objekt ab.(Geerbt von „ConfigurationElement“.)

System_CAPS_protpropertyHasContext

Ruft einen Wert, der angibt, ob die CurrentConfiguration -Eigenschaft ist null.(Geerbt von „ConfigurationElement“.)

System_CAPS_pubpropertyIsSynchronized

Ruft einen Wert ab, der angibt, ob der Zugriff auf die Auflistung synchronisiert ist.

System_CAPS_protpropertyItem[ConfigurationProperty]

Ruft ab oder legt eine Eigenschaft oder ein Attribut dieses Konfigurationselements.(Geerbt von „ConfigurationElement“.)

System_CAPS_protpropertyItem[String]

Ruft eine Eigenschaft, ein Attribut oder ein untergeordnetes Element dieses Konfigurationselements ab oder legt diese bzw. dieses fest.(Geerbt von „ConfigurationElement“.)

System_CAPS_pubpropertyLockAllAttributesExcept

Ruft die Auflistung gesperrter Attribute ab.(Geerbt von „ConfigurationElement“.)

System_CAPS_pubpropertyLockAllElementsExcept

Ruft die Auflistung gesperrter Elemente ab.(Geerbt von „ConfigurationElement“.)

System_CAPS_pubpropertyLockAttributes

Ruft die Auflistung gesperrter Attribute (Geerbt von „ConfigurationElement“.)

System_CAPS_pubpropertyLockElements

Ruft die Auflistung gesperrter Elemente ab.(Geerbt von „ConfigurationElement“.)

System_CAPS_pubpropertyLockItem

Ruft ab oder legt einen Wert, der angibt, ob das Element gesperrt ist.(Geerbt von „ConfigurationElement“.)

System_CAPS_protpropertyProperties

Ruft die Auflistung von Eigenschaften ab.(Geerbt von „ConfigurationElement“.)

System_CAPS_protpropertyRemoveElementName

Ruft ab oder legt den Namen der der ConfigurationElement zugeordnet, der Vorgang zum Entfernen in der ConfigurationElementCollection beim Überschreiben in einer abgeleiteten Klasse.

System_CAPS_pubpropertySyncRoot

Ruft ein Objekt zum Synchronisieren des Zugriffs auf die ConfigurationElementCollection.

System_CAPS_protpropertyThrowOnDuplicate

Ruft einen Wert ab, der angibt, ob der Versuch, der ConfigurationElement ein doppeltes ConfigurationElementCollection hinzuzufügen, eine Ausnahme auslöst.

NameBeschreibung
System_CAPS_protmethodBaseAdd(ConfigurationElement)

Fügt der ConfigurationElementCollection ein Konfigurationselement hinzu.

System_CAPS_protmethodBaseAdd(ConfigurationElement, Boolean)

Fügt ein Konfigurationselement, das die Auflistung von Konfigurationselementen.

System_CAPS_protmethodBaseAdd(Int32, ConfigurationElement)

Fügt ein Konfigurationselement, das die Auflistung von Konfigurationselementen.

System_CAPS_protmethodBaseClear()

Entfernt alle Konfigurationselementobjekte aus der Auflistung.

System_CAPS_protmethodBaseGet(Int32)

Ruft das Konfigurationselement am angegebenen Index ab.

System_CAPS_protmethodBaseGet(Object)

Gibt das Konfigurationselement mit dem angegebenen Schlüssel zurück.

System_CAPS_protmethodBaseGetAllKeys()

Gibt ein Array der Schlüssel für alle Konfigurationselemente der ConfigurationElementCollection.

System_CAPS_protmethodBaseGetKey(Int32)

Ruft den Schlüssel für die ConfigurationElement an der angegebenen Indexposition.

System_CAPS_protmethodBaseIndexOf(ConfigurationElement)

Gibt den Index des angegebenen ConfigurationElement.

System_CAPS_protmethodBaseIsRemoved(Object)

Gibt an, ob die ConfigurationElement mit dem angegebenen Schlüssel wurde aus der ConfigurationElementCollection.

System_CAPS_protmethodBaseRemove(Object)

Entfernt eine ConfigurationElement aus der Auflistung.

System_CAPS_protmethodBaseRemoveAt(Int32)

Entfernt die ConfigurationElement an der angegebenen Indexposition.

System_CAPS_pubmethodCopyTo(ConfigurationElement[], Int32)

Kopiert den Inhalt der ConfigurationElementCollection in ein Array.

System_CAPS_protmethodCreateNewElement()

Erstellt beim Überschreiben in einer abgeleiteten Klasse einen neuen ConfigurationElement.

System_CAPS_protmethodCreateNewElement(String)

Erstellt ein neues ConfigurationElement beim Überschreiben in einer abgeleiteten Klasse.

System_CAPS_protmethodDeserializeElement(XmlReader, Boolean)

Liest XML aus der Konfigurationsdatei.(Geerbt von „ConfigurationElement“.)

System_CAPS_pubmethodEquals(Object)

Vergleicht die ConfigurationElementCollection für das angegebene Objekt.(Überschreibt ConfigurationElement.Equals(Object).)

System_CAPS_protmethodFinalize()

Gibt einem Objekt Gelegenheit, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Geerbt von „Object“.)

System_CAPS_protmethodGetElementKey(ConfigurationElement)

Ruft den Elementschlüssel für ein angegebenes Konfigurationselement beim Überschreiben in einer abgeleiteten Klasse ab.

System_CAPS_pubmethodGetEnumerator()

Diese API unterstützt die Produkt Infrastruktur und sollte nicht direkt aus dem Code verwendet werden. Ruft eine IEnumerator Dient zum Durchlaufen der ConfigurationElementCollection.

System_CAPS_pubmethodGetHashCode()

Ruft einen eindeutigen Wert, der die ConfigurationElementCollection Instanz.(Überschreibt ConfigurationElement.GetHashCode().)

System_CAPS_protmethodGetTransformedAssemblyString(String)

Gibt die transformierte Version des angegebenen Assemblynamens zurück.(Geerbt von „ConfigurationElement“.)

System_CAPS_protmethodGetTransformedTypeString(String)

Gibt die transformierte Version des angegebenen Namens zurück.(Geerbt von „ConfigurationElement“.)

System_CAPS_pubmethodGetType()

Ruft den Type der aktuellen Instanz ab.(Geerbt von „Object“.)

System_CAPS_protmethodInit()

Legt die ConfigurationElement Objekt in ihren ursprünglichen Zustand.(Geerbt von „ConfigurationElement“.)

System_CAPS_protmethodInitializeDefault()

Initialisiert einen Standardsatz von Werten für die ConfigurationElement Objekt.(Geerbt von „ConfigurationElement“.)

System_CAPS_protmethodIsElementName(String)

Gibt an, ob das angegebene ConfigurationElement vorhanden ist, der ConfigurationElementCollection.

System_CAPS_protmethodIsElementRemovable(ConfigurationElement)

Gibt an, ob das angegebene ConfigurationElement entfernt werden kann, aus der ConfigurationElementCollection.

System_CAPS_protmethodIsModified()

Gibt an, ob diese ConfigurationElementCollection wurde geändert, seit es zuletzt gespeichert oder geladen, wenn in einer abgeleiteten Klasse überschrieben wurde.(Überschreibt ConfigurationElement.IsModified().)

System_CAPS_pubmethodIsReadOnly()

Gibt an, ob die ConfigurationElementCollection Objekt ist schreibgeschützt.(Überschreibt ConfigurationElement.IsReadOnly().)

System_CAPS_protmethodListErrors(IList)

Fügt die Fehler über ungültige Eigenschaften in diesem ConfigurationElement -Objekt, und in allen Unterelementen der übergebenen Liste.(Geerbt von „ConfigurationElement“.)

System_CAPS_protmethodMemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.(Geerbt von „Object“.)

System_CAPS_protmethodOnDeserializeUnrecognizedAttribute(String, String)

Ruft einen Wert, der angibt, ob während der Deserialisierung ein unbekanntes Attribut aufgetreten ist.(Geerbt von „ConfigurationElement“.)

System_CAPS_protmethodOnDeserializeUnrecognizedElement(String, XmlReader)

Bewirkt, dass das Konfigurationssystem eine Ausnahme auslöst.(Überschreibt ConfigurationElement.OnDeserializeUnrecognizedElement(String, XmlReader).)

System_CAPS_protmethodOnRequiredPropertyNotFound(String)

Löst eine Ausnahme aus, wenn eine erforderliche Eigenschaft nicht gefunden wird.(Geerbt von „ConfigurationElement“.)

System_CAPS_protmethodPostDeserialize()

Wird nach der Deserialisierung aufgerufen.(Geerbt von „ConfigurationElement“.)

System_CAPS_protmethodPreSerialize(XmlWriter)

Vor der Serialisierung aufgerufen.(Geerbt von „ConfigurationElement“.)

System_CAPS_protmethodReset(ConfigurationElement)

Setzt die ConfigurationElementCollection auf ihren unveränderten Zustand beim Überschreiben in einer abgeleiteten Klasse.(Überschreibt ConfigurationElement.Reset(ConfigurationElement).)

System_CAPS_protmethodResetModified()

Setzt den Wert der IsModified-Eigenschaft auf false zurück, wenn er in einer abgeleiteten Klasse überschrieben wurde.(Überschreibt ConfigurationElement.ResetModified().)

System_CAPS_protmethodSerializeElement(XmlWriter, Boolean)

Schreibt die Konfigurationsdaten in ein XML-Element der Konfigurationsdatei beim Überschreiben in einer abgeleiteten Klasse.(Überschreibt ConfigurationElement.SerializeElement(XmlWriter, Boolean).)

System_CAPS_protmethodSerializeToXmlElement(XmlWriter, String)

Schreibt die äußeren Tags dieses Konfigurationselements in die Konfigurationsdatei bei Implementierung in einer abgeleiteten Klasse.(Geerbt von „ConfigurationElement“.)

System_CAPS_protmethodSetPropertyValue(ConfigurationProperty, Object, Boolean)

Legt eine Eigenschaft mit dem angegebenen Wert fest.(Geerbt von „ConfigurationElement“.)

System_CAPS_protmethodSetReadOnly()

Diese API unterstützt die Produkt Infrastruktur und sollte nicht direkt aus dem Code verwendet werden. Legt die IsReadOnly -Eigenschaft für die ConfigurationElementCollection Objekt und alle untergeordneten Elemente.(Überschreibt ConfigurationElement.SetReadOnly().)

System_CAPS_pubmethodToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.(Geerbt von „Object“.)

System_CAPS_protmethodUnmerge(ConfigurationElement, ConfigurationElement, ConfigurationSaveMode)

Diese API unterstützt die Produkt Infrastruktur und sollte nicht direkt aus dem Code verwendet werden. Kehrt den Effekt der Zusammenführung von Konfigurationsinformationen aus verschiedenen Ebenen der Konfigurationshierarchie (Überschreibt ConfigurationElement.Unmerge(ConfigurationElement, ConfigurationElement, ConfigurationSaveMode).)

NameBeschreibung
System_CAPS_pubinterfaceSystem_CAPS_privmethodICollection.CopyTo(Array, Int32)

Kopiert die ConfigurationElementCollection in ein Array.

NameBeschreibung
System_CAPS_pubmethodAsParallel()

Überladen. Ermöglicht die Parallelisierung einer Abfrage.(Definiert durch ParallelEnumerable.)

System_CAPS_pubmethodAsQueryable()

Überladen. Konvertiert ein IEnumerable zu einer IQueryable.(Definiert durch Queryable.)

System_CAPS_pubmethodCast<TResult>()

Wandelt die Elemente einer IEnumerable in den angegebenen Typ.(Definiert durch Enumerable.)

System_CAPS_pubmethodOfType<TResult>()

Filtert die Elemente einer IEnumerable auf Grundlage eines angegebenen Typs.(Definiert durch Enumerable.)

The T:System.Configuration.ConfigurationElementCollection represents a collection of elements within a configuration file.

System_CAPS_noteHinweis

An element within a configuration file refers to a basic XML element or a section. A simple element is an XML tag with related attributes, if any. A simple element constitutes a section. Complex sections can contain one or more simple elements, a collection of elements, and other sections.

You use the T:System.Configuration.ConfigurationElementCollection to work with a collection of T:System.Configuration.ConfigurationElement objects. Implement this class to add collections of custom T:System.Configuration.ConfigurationElement elements to a T:System.Configuration.ConfigurationSection.

Hinweise für Implementierer:

You can use a programmatic or a declarative (attributed) coding model to create a custom configuration element.

The programmatic model requires that for each element attribute you create a property to get and set its value, and that you add it to the internal property bag of the underlying T:System.Configuration.ConfigurationElement base class.

The declarative model, also referred to as the attributed model, allows you to define an element attribute by using a property and configuring it with attributes. These attributes instruct the ASP.NET configuration system about the property types and their default values. ASP.NET can use reflection to obtain this information and then create the element property objects and perform the required initialization.

The following example shows how to use the T:System.Configuration.ConfigurationElementCollection.

The first example consists of three classes: UrlsSection, UrlsCollection and UrlConfigElement.The UrlsSection class uses the T:System.Configuration.ConfigurationCollectionAttribute to define a custom configuration section. This section contains a URL collection (defined by the UrlsCollection class) of URL elements (defined by the UrlConfigElement class).

using System;
using System.Configuration;

// Define a UrlsSection custom section that contains a 
// UrlsCollection collection of UrlConfigElement elements.
public class UrlsSection : ConfigurationSection
{

    // Declare the UrlsCollection collection property.
    [ConfigurationProperty("urls", IsDefaultCollection = false)]
    [ConfigurationCollection(typeof(UrlsCollection),
        AddItemName = "add",
        ClearItemsName = "clear",
        RemoveItemName = "remove")]
    public UrlsCollection Urls
    {
        get
        {
            UrlsCollection urlsCollection =
                (UrlsCollection)base["urls"];

            return urlsCollection;
        }

        set
        {
            UrlsCollection urlsCollection = value;
        }

    }

    // Create a new instance of the UrlsSection.
    // This constructor creates a configuration element 
    // using the UrlConfigElement default values.
    // It assigns this element to the collection.
    public UrlsSection()
    {
        UrlConfigElement url = new UrlConfigElement();
        Urls.Add(url);

    }

}

// Define the UrlsCollection that contains the 
// UrlsConfigElement elements.
// This class shows how to use the ConfigurationElementCollection.
public class UrlsCollection : ConfigurationElementCollection
{


    public UrlsCollection()
    {

    }

    public override ConfigurationElementCollectionType CollectionType
    {
        get
        {
            return ConfigurationElementCollectionType.AddRemoveClearMap;
        }
    }

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

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

    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);

        // Your custom code goes here.

    }

    protected override void BaseAdd(ConfigurationElement element)
    {
        BaseAdd(element, false);

        // Your custom code goes here.

    }

    public void Remove(UrlConfigElement url)
    {
        if (BaseIndexOf(url) >= 0)
        {
            BaseRemove(url.Name);
            // Your custom code goes here.
            Console.WriteLine("UrlsCollection: {0}", "Removed collection element!");
        }
    }

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

        // Your custom code goes here.

    }

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

        // Your custom code goes here.

    }

    public void Clear()
    {
        BaseClear();

        // Your custom code goes here.
        Console.WriteLine("UrlsCollection: {0}", "Removed entire collection!");
    }

}

// Define the UrlsConfigElement elements that are contained 
// by the UrlsCollection.
public class UrlConfigElement : ConfigurationElement
{
    public UrlConfigElement(String name, String url, int port)
    {
        this.Name = name;
        this.Url = url;
        this.Port = port;
    }

    public UrlConfigElement()
    {

    }

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

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

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

}

This second code example uses the classes specified before. You combine these two examples in a console application project.

using System;
using System.Configuration;
using System.Text;

class UsingConfigurationCollectionElement
{

    // Create a custom section and save it in the 
    // application configuration file.
    static void CreateCustomSection()
    {
        try
        {

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

            // Add the custom section to the application
            // configuration file.
            UrlsSection myUrlsSection = (UrlsSection)config.Sections["MyUrls"];

            if (myUrlsSection == null)
            {
                //  The configuration file does not contain the
                // custom section yet. Create it.
                myUrlsSection = new UrlsSection();

                config.Sections.Add("MyUrls", myUrlsSection);

                // Save the application configuration file.
                myUrlsSection.SectionInformation.ForceSave = true;
                config.Save(ConfigurationSaveMode.Modified); 
            }
            else
                if (myUrlsSection.Urls.Count == 0)
                {

                    // The configuration file contains the
                    // custom section but its element collection is empty.
                    // Initialize the collection. 
                    UrlConfigElement url = new UrlConfigElement();
                    myUrlsSection.Urls.Add(url);

                    // Save the application configuration file.
                    myUrlsSection.SectionInformation.ForceSave = true;
                    config.Save(ConfigurationSaveMode.Modified);
                }


            Console.WriteLine("Created custom section in the application configuration file: {0}",
                config.FilePath);
            Console.WriteLine();

        }
        catch (ConfigurationErrorsException err)
        {
            Console.WriteLine("CreateCustomSection: {0}", err.ToString());
        }

    }

    static void ReadCustomSection()
    {
        try
        {
            // Get the application configuration file.
            System.Configuration.Configuration config =
                    ConfigurationManager.OpenExeConfiguration(
                    ConfigurationUserLevel.None) as Configuration;

            // Read and display the custom section.
            UrlsSection myUrlsSection =
               config.GetSection("MyUrls") as UrlsSection;

            if (myUrlsSection == null)
                Console.WriteLine("Failed to load UrlsSection.");
            else
            {
                Console.WriteLine("Collection elements contained in the custom section collection:");
                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);
                }
            }

        }
        catch (ConfigurationErrorsException err)
        {
            Console.WriteLine("ReadCustomSection(string): {0}", err.ToString());
        }

    }

    // Add an element to the custom section collection.
    // This function uses the ConfigurationCollectionElement Add method.
    static void AddCollectionElement()
    {
        try
        {

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


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


            // Add the element to the collection in the custom section.
            if (config.Sections["MyUrls"] != null)
            {
                UrlConfigElement urlElement = new UrlConfigElement();
                urlElement.Name = "Microsoft";
                urlElement.Url = "http://www.microsoft.com";
                urlElement.Port = 8080;

                // Use the ConfigurationCollectionElement Add method
                // to add the new element to the collection.
                myUrlsSection.Urls.Add(urlElement);


                // Save the application configuration file.
                myUrlsSection.SectionInformation.ForceSave = true;
                config.Save(ConfigurationSaveMode.Modified);


                Console.WriteLine("Added collection element to the custom section in the configuration file: {0}",
                    config.FilePath);
                Console.WriteLine();
            }
            else
                Console.WriteLine("You must create the custom section first.");

        }
        catch (ConfigurationErrorsException err)
        {
            Console.WriteLine("AddCollectionElement: {0}", err.ToString());
        }

    }

    // Remove element from the custom section collection.
    // This function uses one of the ConfigurationCollectionElement 
    // overloaded Remove methods.
    static void RemoveCollectionElement()
    {
        try
        {

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


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


            // Remove the element from the custom section.
            if (config.Sections["MyUrls"] != null)
            {
                UrlConfigElement urlElement = new UrlConfigElement();
                urlElement.Name = "Microsoft";
                urlElement.Url = "http://www.microsoft.com";
                urlElement.Port = 8080;

                // Use one of the ConfigurationCollectionElement Remove 
                // overloaded methods to remove the element from the collection.
                myUrlsSection.Urls.Remove(urlElement);


                // Save the application configuration file.
                myUrlsSection.SectionInformation.ForceSave = true;
                config.Save(ConfigurationSaveMode.Full);


                Console.WriteLine("Removed collection element from he custom section in the configuration file: {0}",
                    config.FilePath);
                Console.WriteLine();
            }
            else
                Console.WriteLine("You must create the custom section first.");

        }
        catch (ConfigurationErrorsException err)
        {
            Console.WriteLine("RemoveCollectionElement: {0}", err.ToString());
        }

    }

    // Remove the collection of elements from the custom section.
    // This function uses the ConfigurationCollectionElement Clear method.
    static void ClearCollectionElements()
    {
        try
        {

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


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


            // Remove the collection of elements from the section.
            if (config.Sections["MyUrls"] != null)
            {
                myUrlsSection.Urls.Clear();


                // Save the application configuration file.
                myUrlsSection.SectionInformation.ForceSave = true;
                config.Save(ConfigurationSaveMode.Full);


                Console.WriteLine("Removed collection of elements from he custom section in the configuration file: {0}",
                    config.FilePath);
                Console.WriteLine();
            }
            else
                Console.WriteLine("You must create the custom section first.");

        }
        catch (ConfigurationErrorsException err)
        {
            Console.WriteLine("ClearCollectionElements: {0}", err.ToString());
        }

    }

    public static void UserMenu()
    {
        string applicationName =
           Environment.GetCommandLineArgs()[0] + ".exe";
        StringBuilder buffer = new StringBuilder();

        buffer.AppendLine("Application: " + applicationName);
        buffer.AppendLine("Make your selection.");
        buffer.AppendLine("?    -- Display help.");
        buffer.AppendLine("Q,q  -- Exit the application.");
        buffer.Append("1    -- Create a custom section that");
        buffer.AppendLine(" contains a collection of elements.");
        buffer.Append("2    -- Read the custom section that");
        buffer.AppendLine(" contains a collection of custom elements.");
        buffer.Append("3    -- Add a collection element to");
        buffer.AppendLine(" the custom section.");
        buffer.Append("4    -- Remove a collection element from");
        buffer.AppendLine(" the custom section.");
        buffer.Append("5    -- Clear the collection of elements from");
        buffer.AppendLine(" the custom section.");

        Console.Write(buffer.ToString());
    }

    // Obtain user's input and provide
    // feedback.
    static void Main(string[] args)
    {
        // Define user selection string.
        string selection;

        // Get the name of the application.
        string appName =
          Environment.GetCommandLineArgs()[0];

        // Get user selection.
        while (true)
        {

            UserMenu();
            Console.Write("> ");
            selection = Console.ReadLine();
            if (selection != string.Empty)
                break;
        }

        while (selection.ToLower() != "q")
        {
            // Process user's input.
            switch (selection)
            {
                case "1":
                    // Create a custom section and save it in the 
                    // application configuration file.
                    CreateCustomSection();
                    break;

                case "2":
                    // Read the custom section from the
                    // application configuration file.
                    ReadCustomSection();
                    break;

                case "3":
                    // Add a collection element to the
                    // custom section.
                    AddCollectionElement();
                    break;

                case "4":
                    // Remove a collection element from the
                    // custom section.
                    RemoveCollectionElement();
                    break;

                case "5":
                    // Clear the collection of elements from the
                    // custom section.
                    ClearCollectionElements();
                    break;

                default:
                    UserMenu();
                    break;
            }
            Console.Write("> ");
            selection = Console.ReadLine();
        }
    }
}

When you run the console application, an instance of the UrlsSection class is created and the following configuration elements are generated in the application configuration file:

<configuration>
    <configSections>
        <section name="MyUrls" type="UrlsSection, 
          ConfigurationElementCollection, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
    </configSections>
    <MyUrls>
        <urls>
           <add name="Contoso" url="http://www.contoso.com" port="4040 />
        </urls>
    </MyUrls>
</configuration

.NET Framework
Verfügbar seit 2.0

Alle öffentlichen statischen Member ( Shared in Visual Basic) dieses Typs sind threadsicher. Die Threadsicherheit für Instanzmember ist nicht garantiert.

Zurück zum Anfang
Anzeigen: