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

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

DDD
DDDオリジナル
2025-01-15 18:46:44336ブラウズ

How Can I Serialize a Class with Dictionary Members in C#?

ディクショナリ メンバーを使用した C# クラスのシリアル化: シンプルなソリューション

多くの開発者は、辞書を含む C# クラスのシリアル化可能性に関するよくある誤解のため、そのクラスをシリアル化するのに苦労しています。 一般に信じられていることに反して、辞書は効率的にシリアル化できます。 重要なのは、IXmlSerializable インターフェースの実装です。

シリアル化可能な汎用辞書の作成

すぐに利用できる解決策には、IXmlSerializable を実装する汎用辞書の作成が含まれます。 これにより、シームレスなシリアル化が可能になります。

<code class="language-csharp">[XmlRoot("dictionary")]
public class SerializableDictionary<TKey, TValue> : Dictionary<TKey, TValue>, IXmlSerializable
{
    // Implementation omitted for brevity
}</code>

構成クラスへの統合

これを構成クラス (例: ConfigFile) で使用するには、標準の Dictionary メンバーをこのカスタム SerializableDictionary に置き換えます:

<code class="language-csharp">public SerializableDictionary<string, string> mappedDrives = new SerializableDictionary<string, string>();</code>

シリアル化と逆シリアル化: 変更は必要ありません

XmlSerializer を使用した既存のシリアル化および逆シリアル化メソッドは、変更せずに機能するはずです。

<code class="language-csharp">public bool Save(string filename)
{
    // Use XmlSerializer to serialize the file
}

public static ConfigFile Load(string filename)
{
    // Use XmlSerializer to deserialize the file
}</code>

IXmlSerializable を実装することにより、ディクショナリ メンバーは完全にシリアル化可能になり、以前のシリアル化例外がなくなりました。 これにより、頻繁に発生する問題に対する簡単な解決策が提供されます。

以上がC# でディクショナリ メンバーを含むクラスをシリアル化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。