gpt4 book ai didi

c# - 使用 MarshalByRefObject 的单声道、可序列化对象

转载 作者:行者123 更新时间:2023-11-30 21:24:41 25 4
gpt4 key购买 nike

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

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

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

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

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

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

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

最佳答案

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

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

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

关于c# - 使用 MarshalByRefObject 的单声道、可序列化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1075288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com