【发布时间】:2010-02-09 12:08:44
【问题描述】:
//Serialize the Object
MemoryStream ms = new MemoryStream();
IFormatter formatter = new BinaryFormatter();
formatter.Serialize(ms , ObjectToSerialize);
byte[] arrbyte = new byte[ms .Length];
ms.Read(arrbyte , 0, (int)ms .Length);
ms.Close();
//Deserialize the Object
Stream s = new MemoryStream(arrbyte);
s.Position = 0;
Object obj = formatter.Deserialize(s);//Throws an Exception
s.Close();
如果我尝试使用上述方式反序列化,则会将异常显示为
'二进制流 '0' 不包含有效的 BinaryHeader。可能的原因是无效的流或序列化和反序列化之间的对象版本更改。'
下面的代码在哪里工作
//Serialize the Object
IFormatter formatter = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
formatter.Serialize(ms, ObjectToSerialize);
ms.Seek(0, SeekOrigin.Begin);
byte[] arrbyte = ms.ToArray();
//Deserialize the Object
Stream s= new MemoryStream(byt);
stream1.Position = 0;
Object obj = formatter.Deserialize(s);
stream1.Close();
唯一的区别是第一种方法使用 Read 方法填充字节数组,而第二种方法使用 Seek & ToArray() 填充字节数组。 异常的原因是什么。
【问题讨论】:
标签: c# serialization