【问题标题】:Mono, Serializable Objects with MarshalByRefObject带有 MarshalByRefObject 的单声道、可序列化对象
【发布时间】:2009-07-03 03:06:43
【问题描述】:

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

Linux客户端序列化和对象,但Windows服务器无法反序列化,报错:

System.Runtime.Serialization.SerializationException
在类中找不到字段“MarshalByRefObject+__identity”

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

BinaryFormatter formatter = new BinaryFormatter();
formatter.Deserialize(data);

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

任何帮助/建议将不胜感激^_^

【问题讨论】:

    标签: c# serialization mono marshalbyrefobject


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-08
      • 2018-10-10
      • 1970-01-01
      • 1970-01-01
      • 2013-03-22
      • 1970-01-01
      相关资源
      最近更新 更多