2009-09-01 61 views

回答

11

如果实施IDictionary类是可序列化(如Dictionary<K,V>)和KV都是可序列化,则标准的.NET序列化机制应该工作。

如果实施IDictionary类是可序列化,但KV是,那么你就可以使用两个数组序列化键和单独关联的值:我想你的意思是你必须序列化的字典,是

// 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]); 
+0

由于我在课堂上有一些疯狂的访问者,我无法实现这个特定的解决方案,但它是我正在寻找的创造性解决方案的类型......所以我会将其标记为答案。谢谢! – 2009-09-01 23:59:56

1

你无法控制的部分课程?

总之,你必须分别序列化键和值。要反序列化,请遍历键/值数组中的每个项并将其添加回字典。

0

您可以使用System.Runtime.Serialization.DataContractSerializer,与ReadObjectWriteObject相同的方式,你会做DeserializeSerialize。 它像一个魅力。

+0

它会串行化/反序列化内联吗?意思是,主序列化是xml,但它可以注入只是为导致问题的IDictionary属性? – toddmo 2013-11-11 15:51:24