ホームページ > バックエンド開発 > C++ > C# でジェネリック ディクショナリ メンバーを含むクラスをシリアル化するにはどうすればよいですか?

C# でジェネリック ディクショナリ メンバーを含むクラスをシリアル化するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-15 18:36:43
オリジナル
407 人が閲覧しました

How Can I Serialize a Class Containing a Generic Dictionary Member in C#?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート