ディクショナリ メンバーを使用した 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 サイトの他の関連記事を参照してください。