我正在尝试将一个C#应用程序移植到.NET (客户端服务器),但遇到了序列化问题。
Linux客户端序列化了and对象,但Windows服务器无法对其进行反序列化,给出了错误:
System.Runtime.Serialization.SerializationException
在类中找不到字段"MarshalByRefObject+__identity“
反序列化是通过BinaryFormatter完成的:
BinaryFormatter formatter = new BinaryFormatter();
formatter.Deserialize(data);有问题的类具有Serializable属性,并且继承自MarshalByRefObject。如果我删除MarshalByRefObject的继承,它会工作得很好。在Windows中一切工作正常,所以我假设这是一个Mono特定的问题。
如有任何帮助/建议,我们将不胜感激。^_^
发布于 2009-07-02 19:06:44
二进制序列化依赖于私有实现细节。在您的示例中,是私有字段__identity。由于Mono开发人员无法访问私有实现细节,这些细节偶尔会不匹配,因此.Net和Mono之间的二进制序列化并不总是兼容的。
请使用Mono:http://www.mono-project.com/Bugs提交测试用例
要解决此问题,您可以为您的类执行自己的自定义序列化。
https://stackoverflow.com/questions/1075288
复制相似问题