C# での汎用辞書メンバーを含むクラスのシリアル化
プロファイル クラスをシリアル化しようとしたときに、Dictionary メンバーをシリアル化しようとしたときにエラーが発生しました。 Dictionary、HybridDictionary、Hashtable を使用しているにもかかわらず、「メンバー App.Configfile.mappedDrives をシリアル化できません」というエラーが表示されます。
問題分析
通常、Dictionary と Hashtable はシリアル化可能ですが、一部の種類の Dictionary オブジェクトは本質的にシリアル化できない場合があります。この場合、問題はジェネリック型の Dictionary をシリアル化しようとしたことが原因で発生します。
解決策
Paul Welter のブログでは、効率的なシリアル化と逆シリアル化を可能にする IXmlSerializable インターフェイスを実装する XML シリアル化可能な汎用辞書を提供しています。
ソリューションの実装
このソリューションは、次のコード スニペットを使用して実装できます:
<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>
要約すると、汎用 Dictionary メンバーを含むクラスをシリアル化するには、IXmlSerializable インターフェイスを明示的にサポートするカスタム XML シリアル化可能な辞書クラスを実装する必要がある場合があります。これにより、辞書の効率的なシリアル化と逆シリアル化が可能になります。
以上がC# でジェネリック ディクショナリ メンバーを含むクラスをシリアル化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。