Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 字典反序列化问题_C#_.net_Serialization_Dictionary - Fatal编程技术网

C# 字典反序列化问题

C# 字典反序列化问题,c#,.net,serialization,dictionary,C#,.net,Serialization,Dictionary,当我试图序列化一本字典时,一切都很顺利。但当我反序列化时,它将count显示为0。但是,它可以与列表配合使用。当我们反序列化列表和字典时,到底发生了什么?字典并不真正支持序列化。这是一个困扰许多程序员的已知问题,因此,如果您搜索“.NET字典序列化”,您将通过“操作”和解决方法获得许多结果 例如,这建议您改用KeyedCollection类 如果使用.Net 3.5,则可以使用DataContractSerializer来序列化字典。它也比BinaryFormatter或XmlSerialize

当我试图序列化一本字典时,一切都很顺利。但当我反序列化时,它将count显示为0。但是,它可以与列表配合使用。当我们反序列化列表和字典时,到底发生了什么?

字典并不真正支持序列化。这是一个困扰许多程序员的已知问题,因此,如果您搜索“.NET字典序列化”,您将通过“操作”和解决方法获得许多结果


例如,这建议您改用KeyedCollection类

如果使用.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);
使用System.Runtime.Serialization;
var dict=新字典();
添加(“a”、“a”);
DataContractSerializer dcs=新的DataContractSerializer(dict.GetType());
MemoryStream ByTestStream=新的MemoryStream();
dcs.WriteObject(byteStream,dict);
ByTestStream.Position=0;
var dict2=dcs.ReadObject(byteStream);

关于字典,你是对的,但是异常可以序列化。@蒂莫雷斯,我已经删除了关于异常的部分。由于包含的字典成员,我在序列化异常时遇到了问题,但这可能与我正在序列化的特定类型的异常有关,或者与我正在使用XmlSerializer有关,甚至可能与我正在使用VB有关。无论如何,我不认为你可以说所有的异常都是可序列化的,我怀疑事实是介于两者之间。如果你有关于这个主题的其他信息,请详细说明。我同意,一般来说,并不是所有的类都是可序列化的。我们必须定义我们谈论的是二进制序列化还是XML序列化。我考虑的是前者,您可以在其中实现ISerializable,以便接管序列化过程并使用嵌入式字典序列化类。您可以使用任何.NET语言,顺便问一下,它们在语义上都是等价的。哪个序列化程序?这很重要吗?这是
XmlSerializer
<代码>二进制格式化程序<代码>数据合同序列化程序<代码>NetDataContractSerializer?JSON?原版bufs?肥皂?恐怕每个人的行为都有细微的不同。很多(不是全部)都支持字典序列化。如果您已经完成了自定义序列化(
ISerializable
等),则可能还需要其他步骤。我正在尝试使用BinaryFormatter进行序列化。。