Menyerikan Kelas C# dengan Ahli Kamus: Penyelesaian Mudah
Ramai pembangun bergelut untuk menyusun kelas C# yang mengandungi kamus kerana salah faham biasa tentang kebolehsirilan mereka. Bertentangan dengan kepercayaan popular, kamus boleh bersiri dengan berkesan. Kuncinya ialah melaksanakan antara muka IXmlSerializable
.
Membuat Kamus Generik Boleh Bersiri
Penyelesaian yang tersedia melibatkan penciptaan kamus generik yang melaksanakan IXmlSerializable
. Ini membolehkan siri lancar:
<code class="language-csharp">[XmlRoot("dictionary")] public class SerializableDictionary<TKey, TValue> : Dictionary<TKey, TValue>, IXmlSerializable { // Implementation omitted for brevity }</code>
Menyepadukan ke dalam Kelas Konfigurasi Anda
Untuk menggunakan ini dalam kelas konfigurasi anda (cth., ConfigFile
), gantikan ahli Dictionary
standard anda dengan tersuai ini SerializableDictionary
:
<code class="language-csharp">public SerializableDictionary<string, string> mappedDrives = new SerializableDictionary<string, string>();</code>
Pensirilan dan Penyahserikatan: Tiada Perubahan Diperlukan
Kaedah bersiri dan penyahserikatan sedia ada anda menggunakan XmlSerializer
seharusnya berfungsi tanpa pengubahsuaian:
<code class="language-csharp">public bool Save(string filename) { // Use XmlSerializer to serialize the file } public static ConfigFile Load(string filename) { // Use XmlSerializer to deserialize the file }</code>
Dengan melaksanakan IXmlSerializable
, ahli kamus kini boleh bersiri sepenuhnya, menghapuskan pengecualian bersiri sebelumnya. Ini memberikan penyelesaian yang mudah kepada masalah yang sering dihadapi.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mensiri Kelas dengan Ahli Kamus dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!