Artikel ini melanjutkan perbincangan sebelum ini tentang isu penyirian kelas yang mengandungi ahli kamus. Kelas ini mengandungi tiga atribut: guiPath
, configPath
dan mappedDrives
. mappedDrives
ialah kamus memetakan huruf pemacu ke laluan rangkaian.
Walau bagaimanapun, apabila mensiri atau menyahsiri kelas, pengguna menerima ralat berikut:
Tidak dapat menyerikan App.Configfile.mappedDrives ahli
Ralat ini berlaku kerana atas sebab tertentu, kamus generik dalam .NET 2.0 tidak boleh bersiri XML.
Penyelesaian
Untuk menyelesaikan masalah ini, pengguna boleh menggunakan kelas kamus boleh bersiri tersuai. Paul Welter menyediakan kelas sedemikian di blognya:
<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 { // 部分代码省略 ... }</code>
Kelas ini melaksanakan antara muka IXmlSerializable
, membolehkan ia disiri dan dinyahsiri. Pengguna kemudiannya boleh menggunakan kelas kamus tersuai ini dalam kelas utama mereka:
<code class="language-csharp">// ... public Dictionary<string, string> mappedDrives = new SerializableDictionary<string, string>(); // ...</code>
Ini sepatutnya membenarkan kelas disiri dan dinyahsiri dengan betul.
Atas ialah kandungan terperinci Bagaimana untuk Mensiri Kelas dengan Ahli Kamus dalam .NET 2.0?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!