gpt4 book ai didi

.net - 我可以使用 protobuf-net 在 Mono 中序列化一个对象(包含成员 : Dictionary, 列表...等)并在 MS.NET 中反序列化它,反之亦然?

转载 作者:行者123 更新时间:2023-12-01 04:02:32 24 4
gpt4 key购买 nike

我有一个在 MS.NET 上运行的服务器和一个在 Mono 上运行的客户端(这是一个 Unity3D 引擎),当我尝试 BinaryFormatter().Deserialize 像这样的对象时:

   [Serializable]   
public class Simulator
{
public IDictionary<int, Task> tasks = new Dictionary<int, Task>();

客户端找不到/加载类型:字典、列表...
在 MS.NET 下运行的相同“客户端代码”运行良好,即在反序列化期间没有任何异常。

正如我从 http://www.mono-project.com/FAQ:_Technical#Compatibility 中读到的那样这是一个常见问题:

“如果您正在序列化自己的类,那没有问题,因为您可以控制用于序列化的程序集和类。
但是,如果您从框架中序列化对象,则不能保证序列化兼容性,因为这些对象的内部结构可能不同。在不同的 MS.NET 版本或 Mono 版本之间甚至无法保证这种兼容性。”

ProtoBuf-Net 是否有助于避免/解决此序列化/反序列化问题?

最佳答案

是的,像 protobuf-net 这样的外部序列化工具可以解决这个问题 - 事实上,一旦你在平台之间进行序列化(C++ 到 java 到 python 到 .net),框架版本就不再那么重要了。

所以是的:在 .NET 上加载时,在单声道/统一的 protobuf-net 中序列化的数据完全兼容。不过需要注意的是BinaryFormatter和 protobuf-net 不是直接的 1:1 等价物——每个都有略微不同的特性和行为。例如,protobuf-net 不会遍历事件/委托(delegate),并且通常不能很好地处理仅称为“对象”的事物。但是,完全支持字典和列表等关键/常见场景。

关于.net - 我可以使用 protobuf-net 在 Mono 中序列化一个对象(包含成员 : Dictionary, 列表...等)并在 MS.NET 中反序列化它,反之亦然?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12504275/

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