我正在尝试将C#应用程序移植到.NET(客户端服务器),并且遇到序列化问题。
Linux客户端序列化和对象,但Windows服务器无法反序列化,给出错误:
System.Runtime.Serialization.SerializationException
在类
反序列化通过BinaryFormatter完成:
BinaryFormatter formatter = new BinaryFormatter();
formatter.Deserialize(data);
有问题的类具有Serializable属性,并且继承自MarshalByRefObject。如果我删除MarshalByRefObject的继承,它工作正常。在Windows中一切正常,所以我假设这是Mono特定的问题。
非常感谢任何帮助/建议^ _ ^
答案 0 :(得分:4)
二进制序列化依赖于私有实现细节。在您的情况下,私有字段__identity。因为Mono开发人员无法访问私有实现细节,所以这些偶尔不匹配,因此.Net和Mono之间的二进制序列化并不总是兼容。
请使用Mono提交测试用例: http://www.mono-project.com/Bugs
要解决此问题,您可以为您的班级执行自己的自定义序列化。