C# 如何序列化IDictionary

C# 如何序列化IDictionary,c#,C#,有人知道一种创造性的方法来序列化实现IDictionary的对象吗。。。不实现新类?如果实现IDictionary的类是可序列化的(like),并且K和V是可序列化的,那么标准的.NET序列化机制应该可以工作 如果实现IDictionary的类是可序列化的,但K和V是可序列化的,则可以使用两个数组分别序列化键和相关值: // before serialization IDictionary<string,int> dict; string[] keys = dict.Keys.ToA

有人知道一种创造性的方法来序列化实现IDictionary的对象吗。。。不实现新类?

如果实现
IDictionary
的类是可序列化的(like),并且
K
V
是可序列化的,那么标准的.NET序列化机制应该可以工作


如果实现
IDictionary
的类是可序列化的,但
K
V
是可序列化的,则可以使用两个数组分别序列化键和相关值:

// before serialization
IDictionary<string,int> dict;
string[] keys = dict.Keys.ToArray();
int[] values = dict.Keys.Select(key => dict[key]).ToArray();

// after deserialization
IDictionary<string,int> dict = new Dictionary<string,int>();
for (int i = 0; i < keys.Length; i++)
    dict.Add(keys[i], values[i]);
//序列化之前
词典词典;
string[]keys=dict.keys.ToArray();
int[]values=dict.Keys.Select(key=>dict[key]).ToArray();
//反序列化后
IDictionary dict=新字典();
for(int i=0;i
我想你的意思是你必须序列化一个字典,它是你无法控制的类的一部分


简而言之,您必须分别序列化键和值。要进行反序列化,请逐步遍历键/值数组中的每个项,并将它们添加回字典。

您可以使用
System.Runtime.Serialization.DataContractSerializer
,使用
ReadObject
WriteObject
反序列化
的方法相同。
它工作起来很有魅力。

由于我在课堂上有一些疯狂的访问器,我无法实现这个特定的解决方案,但这正是我所寻找的创造性解决方案的类型。。。所以我将把这个标记为答案。谢谢它会内联序列化/反序列化吗?也就是说,主要的序列化是xml,但它可以只为引起问题的IDictionary属性进行注入?