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

ConfigurationPropertyAttribute-Klasse

 

Veröffentlicht: Oktober 2016

Deklarativ weist .NET Framework eine Konfigurationseigenschaft zu instanziieren. Diese Klasse kann nicht vererbt werden.

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

System.Object
  System.Attribute
    System.Configuration.ConfigurationPropertyAttribute

[AttributeUsageAttribute(AttributeTargets.Property)]
public sealed class ConfigurationPropertyAttribute : Attribute

NameBeschreibung
System_CAPS_pubmethodConfigurationPropertyAttribute(String)

Diese API unterstützt die Produkt Infrastruktur und sollte nicht direkt aus dem Code verwendet werden. Initialisiert eine neue Instanz der ConfigurationPropertyAttribute-Klasse.

NameBeschreibung
System_CAPS_pubpropertyDefaultValue

Ruft ab oder legt den Standardwert für die ergänzte Eigenschaft fest.

System_CAPS_pubpropertyIsDefaultCollection

Ruft ab oder legt einen Wert, der angibt, ob diese Auflistung mit den Eigenschaften Standard für die ergänzte Konfigurationseigenschaft ist.

System_CAPS_pubpropertyIsKey

Ruft ab oder legt einen Wert, der angibt, ob dies eine Haupteigenschaft für die ergänzte Elementeigenschaft ist.

System_CAPS_pubpropertyIsRequired

Ruft ab oder legt einen Wert, der angibt, ob die ergänzte Elementeigenschaft erforderlich ist.

System_CAPS_pubpropertyName

Ruft den Namen der Eigenschaft ergänzten Konfigurationselement.

System_CAPS_pubpropertyOptions

Ruft ab oder legt die ConfigurationPropertyOptions für die ergänzte Konfigurationselement-Eigenschaft.

System_CAPS_pubpropertyTypeId

Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribute ab.(Geerbt von „Attribute“.)

NameBeschreibung
System_CAPS_pubmethodEquals(Object)

Diese API unterstützt die Produkt Infrastruktur und sollte nicht direkt aus dem Code verwendet werden. Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist.(Geerbt von „Attribute“.)

System_CAPS_pubmethodGetHashCode()

Gibt den Hashcode für diese Instanz zurück.(Geerbt von „Attribute“.)

System_CAPS_pubmethodGetType()

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

System_CAPS_pubmethodIsDefaultAttribute()

Gibt beim Überschreiben in einer abgeleiteten Klasse an, ob der Wert der Instanz der Standardwert für die abgeleitete Klasse ist.(Geerbt von „Attribute“.)

System_CAPS_pubmethodMatch(Object)

Ruft beim Überschreiben in einer abgeleiteten Klasse gibt einen Wert, der angibt, ob diese Instanz gleich ein angegebenen Objekt ist.(Geerbt von „Attribute“.)

System_CAPS_pubmethodToString()

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

NameBeschreibung
System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu.(Geerbt von „Attribute“.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Ruft die Typinformationen für ein Objekt ab, mit deren Hilfe die Typinformationen für eine Schnittstelle abgerufen werden können.(Geerbt von „Attribute“.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfoCount(UInt32)

Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1).(Geerbt von „Attribute“.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit.(Geerbt von „Attribute“.)

Verwenden Sie die ConfigurationPropertyAttribute eine Konfigurationseigenschaft, die .NET Framework, instanziieren und initialisieren die Eigenschaft mit dem Wert des ergänzenden Parameters ergänzen.

System_CAPS_noteHinweis

Am einfachsten erstellen Sie ein benutzerdefiniertes Konfigurationselement ist die Verwendung des attributierten (deklarativen) Modells. Sie deklarieren die benutzerdefinierten öffentlichen Eigenschaften und ergänzen sie mit dem ConfigurationPropertyAttribute Attribut. Für jede mit diesem Attribut markierte Eigenschaft verwendet .NET Framework Reflektion, um die ergänzenden Parameter zu lesen und eine zugehörige ConfigurationProperty Instanz. Sie können auch das programmgesteuerte Modell verwenden, in diesem Fall liegt es in Ihrer Verantwortung deklarieren die benutzerdefinierten öffentlichen Eigenschaften und ihre Auflistung zurückgeben.

Das .NET Framework-Konfigurationssystem stellt Attributtypen, die Sie bei der Erstellung von benutzerdefinierten Konfigurationselementen verwenden können. Es gibt zwei Arten von Attributtypen:

  1. Die Typen, die .NET Framework anweisen, wie die Eigenschaften von benutzerdefinierten Konfigurationselementen instanziiert. Dazu gehören:

  2. Die Typen, die .NET Framework anweisen, wie die Eigenschaften von benutzerdefinierten Konfigurationselementen validiert. Dazu gehören:

Das folgende Beispiel zeigt, wie Sie zum Definieren der Eigenschaften eines benutzerdefinierten ConfigurationSection -Objekt unter Verwendung der ConfigurationPropertyAttribute Attribut.

Das Beispiel enthält zwei Klassen. Die UrlsSection benutzerdefinierte Klasse verwendet die ConfigurationPropertyAttribute über eigene Eigenschaften definieren. Die UsingConfigurationPropertyAttribute -Klasse verwendet die UrlsSection zum Lesen und schreiben den benutzerdefinierten Abschnitt in der Konfigurationsdatei der Anwendung.

using System;
using System.Configuration;


// Define a custom section.
// This class shows how to use the ConfigurationPropertyAttribute.
public class UrlsSection : ConfigurationSection
{
    [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)0, IsRequired = false)]
    [IntegerValidator(MinValue = 0, MaxValue = 8080, ExcludeRange = false)]
    public int Port
    {
        get
        {
            return (int)this["port"];
        }
        set
        {
            this["port"] = value;
        }
    }
}
using System;
using System.Configuration;

public class UsingConfigurationPropertyAttribute
{

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

            // Create a custom configuration section.
            UrlsSection customSection = new UrlsSection();

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

            // Add the custom section to the application
            // configuration file.
            if (config.Sections["CustomSection"] == null)
            {
                config.Sections.Add("CustomSection", customSection);
            }


            // Save the application configuration file.
            customSection.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 customSection =
                config.GetSection("CustomSection") as UrlsSection;
            Console.WriteLine("Reading custom section from the configuration file.");
            Console.WriteLine("Section name: {0}", customSection.Name);
            Console.WriteLine("Url: {0}", customSection.Url);
            Console.WriteLine("Port: {0}", customSection.Port);
            Console.WriteLine();
        }
        catch (ConfigurationErrorsException err)
        {
            Console.WriteLine("ReadCustomSection(string): {0}", err.ToString());
        }

    }

    static void Main(string[] args)
    {

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

        // Create a custom section and save it in the 
        // application configuration file.
        CreateCustomSection();

        // Read the custom section saved in the
        // application configuration file.
        ReadCustomSection();

        Console.WriteLine("Press enter to exit.");

        Console.ReadLine();
    }
}

Im folgenden ist ein Auszug aus der Konfigurationsdatei mit dem benutzerdefinierten Abschnitt, wie im vorherigen Beispiel definiert.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <configSections>
        <section name="CustomSection" type="UrlsSection, UsingConfigurationPropertyAttribute, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
    </configSections>
    <CustomSection name="Contoso" url="http://www.contoso.com" />
</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: