Dictionary的反序列化问题

时间:2010-03-04 09:50:07

标签: c# .net serialization dictionary

当我尝试序列化字典时,一切正常。但是当我反序列化它显示计数为0.但是,它与列表一起工作正常。当我们反序列化列表和字典时,究竟会发生什么?

2 个答案:

答案 0 :(得分:3)

词典并不真正支持序列化。这是一个让许多程序员感到困扰的已知问题,因此如果您使用Google“.NET Dictionary Serialization”,您将获得许多带有“操作方法”和解决方法的结果。

例如,此blog post建议您使用KeyedCollection类。

答案 1 :(得分:1)

如果您使用.Net 3.5,则可以使用将序列化字典的DataContractSerializer。它也比BinaryFormatter或XmlSerializer快。

using System.Runtime.Serialization;

var dict = new Dictionary<string, string>();
dict.Add("a","a");

DataContractSerializer dcs = new DataContractSerializer(dict.GetType());
MemoryStream byteStream = new MemoryStream();
dcs.WriteObject(byteStream, dict);
byteStream.Position = 0;

var dict2 = dcs.ReadObject(byteStream);