mono - .NET 可以序列化对象( 包含成员: 单词字典,列表""等等,在 MS.NET 中进行反序列化,反之亦然使用protobuf网络?

  显示原文与译文双语对照的内容
114 4

我有一个服务器在 MS.NET 上运行,在单机( 这是一个Unity3D引擎) 上运行一个客户端,当我试图对对象进行反序列化时:


 [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帮助避免/解决这里序列化/反序列化问题?

时间: 原作者:

53 5

是的,如protobuf网的外部序列化工具将解决这一问题:一旦平台之间的序列化( C++ 到 python 到. net), 框架) 。

因此是:在protobuf网络上序列化的数据在. NET 上加载时完全兼容。 然而,应该注意的是,BinaryFormatter 和protobuf网络是的,不是直接的:1 等价的,它们的特性和行为都有些不同。 例如,protobuf网络不会漫游事件/委托,并且通常不会很好地与只作为"对象"的事件发挥作用。 然而,像字典和列表这样的键/常见场景被完全支持。

原作者:
...