我正在尝试找出在程序中处理序列化的最佳方法。

我想序列化私有字段(因此XML序列化器是没有选项的),我想序列化诸如bindingList(soapserializer n n Nh Option)之类的通用类型,我也想提供一定程度的支持,以便能够从我程序的先前版本中进行对象。

因此,我认为我剩下的就是 BinarySerializer,并实现 ISerialized 接口来应对前向兼容性。

它是否正确?

笔记:我必须说我找到了这个项目。然而该项目似乎已经死了,我无法让它工作(文件丢失错误)http://sourceforge.net/project/showfiles.php?group_id=196509

有帮助吗?

解决方案

使用BinaryFormatter,可以使用 [OptionalField] ,但是这仍然是非常脆

如何 protobuf网?难道这一切,并没有与BinaryFormatter的相关的版本问题。由于它是基于谷歌的“协议缓冲区”的格式,它是设计是版本宽容和可扩展性(披露:我是作家,所以我可能是偏见)。

可替换地,支持DataContractSerializer场序列;对您的字段,而不是性能只是设置[DataMember](需要.NET 3.0)。

其他提示

是的,您需要实现 ISerialized。

关键点如下

  • 实现 GetObjectData(SerializationInfo info, StreamingContext context)。这里您需要将密钥对添加到 info 对象中。
  • 实现序列化构造函数 MyClass(SerializationInfo info, StreamingContext context)。在这里,您需要从信息对象中获取值。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top