我有3个项目,第一个是客户端,第二个是服务器,最后一个是BroadcastMessage:
在客户端有这个代码来序列化和对象(this = BroadcastMessage):
public MemoryStream SerializeObject()
{
MemoryStream stream = new MemoryStream();
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, this);
return stream;
}
然后,我将此流转换为 byte[] 并通过套接字发送到服务器,在那里,我反序列化:
BinaryFormatter formatter = new BinaryFormatter();
Stream str = new MemoryStream(inMessage);
BroadcastMessage m = (BroadcastMessage) formatter.Deserialize(str);
客户端和服务器之间的通信是正确的,我收到了完整的流,但是当我尝试反序列化时,根本不起作用,给了我一个 TargetInvocationException,原因是试图找到对象(BroadcastMessage)被序列化的项目。如果我将此项目添加到服务器,则反序列化可以正常工作,但我无法添加使用此“BroadcastMessage”的每个类的项目。
有什么建议么?序列化时有没有办法指示正确的命名空间?提前致谢!
编辑:好的,问题是因为我订阅了课程的一个事件,得到了事件的监听并且完美地工作,谢谢大家的时间。