Mensiri kelas yang mengandungi ahli kamus generik dalam C#
Semasa cuba mensiri kelas profil, ralat telah ditemui semasa cuba mensiri ahli Kamus. Walaupun menggunakan Dictionary, HybridDictionary dan Hashtable, saya masih mendapat ralat berikut: "Tidak dapat menyerikan ahli App.Configfile.mappedDrives".
Analisis Masalah
Biasanya, Kamus dan Hashtable boleh bersiri, tetapi sesetengah jenis objek Kamus mungkin tidak boleh bersiri secara semula jadi. Dalam kes ini, masalahnya berpunca daripada cubaan untuk mensiri Kamus jenis generik.
Penyelesaian
Blog Paul Welter menyediakan kamus generik boleh bersiri XML yang melaksanakan antara muka IXmlSerializable, membolehkan pensirilan dan penyahsirilan yang cekap.
Pelaksanaan penyelesaian
Penyelesaian boleh dilaksanakan menggunakan coretan kod berikut:
<code class="language-csharp">using System; using System.Collections.Generic; using System.Text; using System.Xml.Serialization; [XmlRoot("dictionary")] public class SerializableDictionary<TKey, TValue> : Dictionary<TKey, TValue>, IXmlSerializable { // ... 省略 SerializableDictionary 类的实现细节 ... }</code>
Ringkasnya, untuk menyerikan kelas yang mengandungi ahli Kamus generik, anda mungkin perlu melaksanakan kelas kamus boleh bersiri XML tersuai yang menyokong antara muka IXmlSerializable secara eksplisit. Ini akan membolehkan penyiaran yang cekap dan penyahserikatan kamus.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mensiri Kelas yang Mengandungi Ahli Kamus Generik dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!