【发布时间】:2014-05-05 08:56:06
【问题描述】:
我正在尝试以字节流的形式在 2 个进程之间发送数据,这对于几乎所有类都可以正常工作,但我遇到的一个问题是,如果对象的类内部有一个字节数组,则反序列化会失败它并给我一个错误,说明无法加载发生序列化的程序集。我不能在此处包含程序集,因为发送者和接收者都是不同的应用程序。
有没有办法解决这个问题?
编辑:很抱歉,即使是普通类也无法在另一端反序列化
编辑:两个应用程序之一使用.Net 2.0
public static byte[] SerializeToByteArray(this object obj)
{
if (obj == null)
{
return null;
}
var bf = new BinaryFormatter();
using (var ms = new MemoryStream())
{
bf.Serialize(ms, obj);
return ms.ToArray();
}
}
public static T Deserialize<T>(this byte[] byteArray) where T : class
{
if (byteArray == null)
{
return null;
}
using (var memStream = new MemoryStream())
{
var binForm = new BinaryFormatter();
memStream.Write(byteArray, 0, byteArray.Length);
memStream.Seek(0, SeekOrigin.Begin);s
var obj = (T)binForm.Deserialize(memStream);
return obj;
}
}
【问题讨论】:
-
您使用哪种形式的序列化?请添加一些源代码来说明您的情况
-
我正在使用内存流进行序列化和反序列化.....
-
BinaryFormatter 需要确切版本的程序集,其中定义了要序列化/反序列化的类。你需要切换到另一种形式的序列化
-
您可以将一个程序集与您想在两个应用程序中使用的数据类型一起使用。也许序列化也可以在该程序集中解决。
-
嘿抱歉回复晚了,我就是这么做的,现在效果很好!谢谢!
标签: c# arrays serialization deserialization