Heim > Backend-Entwicklung > C++ > Wie implementiert man einen ConfigurationSection mit einer ConfigurationElementCollection in .NET korrekt?

Wie implementiert man einen ConfigurationSection mit einer ConfigurationElementCollection in .NET korrekt?

Mary-Kate Olsen
Freigeben: 2024-12-27 05:38:09
Original
864 Leute haben es durchsucht

How to Correctly Implement a ConfigurationSection with a ConfigurationElementCollection in .NET?

Implementieren eines ConfigurationSection mit einer ConfigurationElementCollection

Beim Anpassen von Konfigurationen können beim Implementieren eines Konfigurationsabschnitts Probleme auftreten. Dieser Artikel befasst sich mit der Verwendung einer ConfigurationSection mit einer ConfigurationElementCollection, klärt Missverständnisse auf und bietet Anleitungen zur korrekten Implementierung.

Kontext

Sie haben in Ihrer App.config-Datei einen benutzerdefinierten Konfigurationsabschnitt mit einer ServicesSection definiert und ein ServiceCollection-Element. Trotz der Erstellung von Elementklassen (ServiceConfig und ServiceCollection) sind jedoch Ausnahmen beim Konfigurationsabschnittshandler aufgetreten.

Lösung

Konfigurationsabschnittshandler

Sie haben zunächst versucht, den IConfigurationSectionHandler zu verwenden Schnittstelle, die jetzt veraltet ist. Der richtige Ansatz besteht darin, eine Konfigurationsabschnittsklasse zu erstellen, die von ConfigurationSection abgeleitet ist. In Ihrem Fall benötigen Sie eine ServiceConfigurationSection-Klasse. Diese Klasse sollte eine Services-Eigenschaft definieren, die eine ConfigurationCollection von ServiceConfig-Elementen ist.

Configuration Collection-Implementierung

Achten Sie innerhalb Ihrer ServiceCollection-Klasse darauf, ConfigurationElementCollection zu erweitern und die erforderlichen Methoden zum Erstellen neuer Elemente zu überschreiben ( CreateNewElement), Elementschlüssel abrufen (GetElementKey) und Vorgänge wie das Hinzufügen, Entfernen und Löschen von Elementen ausführen.

Final Code

Hier ist der vollständige Code für die notwendigen Klassen und Konfigurationen:

ServiceConfig:

public class ServiceConfig : ConfigurationElement
{
    [ConfigurationProperty("Port", DefaultValue = 0, IsRequired = true, IsKey = true)]
    public int Port { get; set; }

    [ConfigurationProperty("ReportType", DefaultValue = "File", IsRequired = true, IsKey = false)]
    public string ReportType { get; set; }
}
Nach dem Login kopieren

ServiceCollection:

public class ServiceCollection : ConfigurationElementCollection
{
    public override ConfigurationElement CreateNewElement() => new ServiceConfig();
    protected override object GetElementKey(ConfigurationElement element) => ((ServiceConfig)element).Port;
}
Nach dem Login kopieren

ServiceConfigurationSection:

public class ServiceConfigurationSection : ConfigurationSection
{
    [ConfigurationProperty("Services", IsDefaultCollection = false)]
    [ConfigurationCollection(typeof(ServiceCollection),
        AddItemName = "add",
        ClearItemsName = "clear",
        RemoveItemName = "remove")]
    public ServiceCollection Services => (ServiceCollection)base["Services"];
}
Nach dem Login kopieren

App.config Konfiguration:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="ServicesSection" type="RT.Core.Config.ServiceConfigurationSection, RT.Core" />
    </configSections>
    <ServicesSection>
        <Services>
            <add Port="6996" ReportType="File" />
            <add Port="7001" ReportType="Other" />
        </Services>
    </ServicesSection>
</configuration>
Nach dem Login kopieren

Verbrauchsbeispiel:

ServiceConfigurationSection serviceConfigSection = ConfigurationManager.GetSection("ServicesSection") as ServiceConfigurationSection;
ServiceConfig serviceConfig = serviceConfigSection.Services[0];
Nach dem Login kopieren

Durch Befolgen dieser Schritte können Sie einen benutzerdefinierten Konfigurationsabschnitt mit einem Sammlungselement erfolgreich implementieren.

Das obige ist der detaillierte Inhalt vonWie implementiert man einen ConfigurationSection mit einer ConfigurationElementCollection in .NET korrekt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage