使用字典成员序列化 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中文网其他相关文章!