この記事は、ディクショナリ メンバーを含むクラスのシリアル化の問題に関する以前の議論を拡張したものです。このクラスには、guiPath
、configPath
、mappedDrives
の 3 つの属性が含まれています。 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 中国語 Web サイトの他の関連記事を参照してください。