我有一台服务器和一个客户端,它们之间会相互交换各种数据。最初,我采用了一种复杂的方法,逐个地将字节数组中的变量和字符串转换为它们应该是的类型。后来我发现可以把所有变量放进一个对象中,然后使用
private static byte[] ObjectToByteArray2(Object obj)
{
if (obj == null)
return null;
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, obj);
return ms.ToArray();
}
使用以下方法将其转换回来
private static Object ByteArrayToObject(byte[] arrBytes)
{
MemoryStream memStream = new MemoryStream();
BinaryFormatter binForm = new BinaryFormatter();
memStream.Write(arrBytes, 0, arrBytes.Length);
memStream.Seek(0, SeekOrigin.Begin);
Object obj = (Object)binForm.Deserialize(memStream);
return obj;
}
问题是,一旦我把这个字节数组发送到另一个应用程序,我就不能再使用这种方法将其转换回来,会出现错误“无法找到程序集 'test1s, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'。” test1s只是我为测试而创建的小型服务器程序的名称。显然,应用程序需要一些额外的信息才能将此数组转换回对象,所以我是否可以做到这一点,或者我解决问题的方法不正确?
我的目标是创建一个仅由几个变量和字符串组成的对象,将其转换为字节数组,发送到另一个应用程序,并将其转换回对象。这样,我就不必操作字节数组来提取所有的变量和字符串。
谢谢