首頁 > 後端開發 > C++ > 如何在 C# 中序列化帶有字典成員的類別?

如何在 C# 中序列化帶有字典成員的類別?

DDD
發布: 2025-01-15 18:46:44
原創
333 人瀏覽過

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

使用字典成員序列化 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板