Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Melaksanakan ConfigurationSection dengan ConfigurationElementCollection dengan betul dalam .NET?

Bagaimana untuk Melaksanakan ConfigurationSection dengan ConfigurationElementCollection dengan betul dalam .NET?

Mary-Kate Olsen
Lepaskan: 2024-12-27 05:38:09
asal
820 orang telah melayarinya

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

Melaksanakan ConfigurationSection dengan ConfigurationElementCollection

Apabila menyesuaikan konfigurasi, anda mungkin menghadapi masalah semasa melaksanakan bahagian konfigurasi. Artikel ini membincangkan penggunaan ConfigurationSection dengan ConfigurationElementCollection, menjelaskan salah tanggapan dan menyediakan panduan tentang pelaksanaan yang betul.

Konteks

Anda telah menentukan bahagian konfigurasi tersuai dalam fail App.config anda dengan ServicesSection dan elemen ServiceCollection. Walau bagaimanapun, walaupun mencipta kelas elemen (ServiceConfig dan ServiceCollection), anda menghadapi pengecualian dengan pengendali bahagian konfigurasi.

Penyelesaian

Pengendali Bahagian Konfigurasi

Anda pada mulanya cuba menggunakan IConfigurationSectionHandler antara muka, yang kini tidak digunakan lagi. Pendekatan yang betul adalah untuk mencipta kelas bahagian konfigurasi yang berasal dari ConfigurationSection. Dalam kes anda, anda memerlukan kelas ServiceConfigurationSection. Kelas ini harus menentukan sifat Perkhidmatan yang merupakan ConfigurationCollection bagi elemen ServiceConfig.

Pelaksanaan Koleksi Konfigurasi

Dalam kelas ServiceCollection anda, pastikan anda melanjutkan ConfigurationElementCollection dan mengatasi kaedah yang diperlukan untuk mencipta elemen baharu ( CreateNewElement), dapatkan kunci elemen (GetElementKey), dan lakukan operasi seperti menambah, mengalih keluar, dan mengosongkan elemen.

Kod Akhir

Berikut ialah kod lengkap untuk kelas yang diperlukan dan konfigurasi:

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; }
}
Salin selepas log masuk

ServiceCollection:

public class ServiceCollection : ConfigurationElementCollection
{
    public override ConfigurationElement CreateNewElement() => new ServiceConfig();
    protected override object GetElementKey(ConfigurationElement element) => ((ServiceConfig)element).Port;
}
Salin selepas log masuk

ServiceConfigurationSection:

public class ServiceConfigurationSection : ConfigurationSection
{
    [ConfigurationProperty("Services", IsDefaultCollection = false)]
    [ConfigurationCollection(typeof(ServiceCollection),
        AddItemName = "add",
        ClearItemsName = "clear",
        RemoveItemName = "remove")]
    public ServiceCollection Services => (ServiceCollection)base["Services"];
}
Salin selepas log masuk

App.config Configuration:

<?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>
Salin selepas log masuk

Penggunaan Contoh:

ServiceConfigurationSection serviceConfigSection = ConfigurationManager.GetSection("ServicesSection") as ServiceConfigurationSection;
ServiceConfig serviceConfig = serviceConfigSection.Services[0];
Salin selepas log masuk

Dengan mengikuti langkah ini, anda boleh berjaya melaksanakan bahagian konfigurasi tersuai dengan elemen koleksi.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan ConfigurationSection dengan ConfigurationElementCollection dengan betul dalam .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan