本文扩展了之前一个关于序列化包含字典成员类的问题的讨论。该类包含三个属性: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中文网其他相关文章!