本文擴展了先前關於序列化包含字典成員類別的問題的討論。此類別包含三個屬性:guiPath
、configPath
和mappedDrives
。 mappedDrives
是一個字典,用於映射磁碟機字母到網路路徑。
然而,在序列化或反序列化該類別時,使用者會收到以下錯誤:
無法序列化成員 App.Configfile.mappedDrives
此錯誤發生是因為某種原因,.NET 2.0 中的泛型字典不可 XML 序列化。
解
為了解決這個問題,使用者可以使用自訂的可序列化字典類別。 Paul Welter在他的部落格上提供了一個這樣的類別:
<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>
此類實現了 IXmlSerializable
接口,允許它被序列化和反序列化。然後,使用者可以在其主類別中使用此自訂字典類別:
<code class="language-csharp">// ... public Dictionary<string, string> mappedDrives = new SerializableDictionary<string, string>(); // ...</code>
這樣應該允許該類別正確地序列化和反序列化。
以上是如何在.NET 2.0中序列化帶有字典成員的類別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!