包含具有向后兼容性的泛型的类的序列化
-
09-09-2019 - |
题
我正在尝试找出在程序中处理序列化的最佳方法。
我想序列化私有字段(因此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)。在这里,您需要从信息对象中获取值。
不隶属于 StackOverflow