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.
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.
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.
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.
Berikut ialah kod lengkap untuk kelas yang diperlukan dan konfigurasi:
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; } }
ServiceCollection:
public class ServiceCollection : ConfigurationElementCollection { public override ConfigurationElement CreateNewElement() => new ServiceConfig(); protected override object GetElementKey(ConfigurationElement element) => ((ServiceConfig)element).Port; }
public class ServiceConfigurationSection : ConfigurationSection { [ConfigurationProperty("Services", IsDefaultCollection = false)] [ConfigurationCollection(typeof(ServiceCollection), AddItemName = "add", ClearItemsName = "clear", RemoveItemName = "remove")] public ServiceCollection Services => (ServiceCollection)base["Services"]; }
<?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>
ServiceConfigurationSection serviceConfigSection = ConfigurationManager.GetSection("ServicesSection") as ServiceConfigurationSection; ServiceConfig serviceConfig = serviceConfigSection.Services[0];
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!