Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mensiri Kelas dengan Ahli Kamus dalam C#?

Bagaimanakah Saya Boleh Mensiri Kelas dengan Ahli Kamus dalam C#?

DDD
Lepaskan: 2025-01-15 18:46:44
asal
332 orang telah melayarinya

How Can I Serialize a Class with Dictionary Members in C#?

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

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

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

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan