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