首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用MarshalByRefObject实现单声道、可序列化的对象

使用MarshalByRefObject实现单声道、可序列化的对象
EN

Stack Overflow用户
提问于 2009-07-02 16:13:38
回答 1查看 1K关注 0票数 2

我正在尝试将一个C#应用程序移植到.NET (客户端服务器),但遇到了序列化问题。

Linux客户端序列化了and对象,但Windows服务器无法对其进行反序列化,给出了错误:

System.Runtime.Serialization.SerializationException

在类中找不到字段"MarshalByRefObject+__identity“

反序列化是通过BinaryFormatter完成的:

代码语言:javascript
复制
BinaryFormatter formatter = new BinaryFormatter();
formatter.Deserialize(data);

有问题的类具有Serializable属性,并且继承自MarshalByRefObject。如果我删除MarshalByRefObject的继承,它会工作得很好。在Windows中一切工作正常,所以我假设这是一个Mono特定的问题。

如有任何帮助/建议,我们将不胜感激。^_^

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-07-02 19:06:44

二进制序列化依赖于私有实现细节。在您的示例中,是私有字段__identity。由于Mono开发人员无法访问私有实现细节,这些细节偶尔会不匹配,因此.Net和Mono之间的二进制序列化并不总是兼容的。

请使用Mono:http://www.mono-project.com/Bugs提交测试用例

要解决此问题,您可以为您的类执行自己的自定义序列化。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1075288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档