2

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

我想序列化私有字段(所以 XML 序列化器不是选项) 我想序列化像 Bindinglist 这样的泛型类型(SoapSerializer 不是选项) 我还想为能够从我的程序的以前版本反序列化对象提供某种程度的支持。

所以我认为我剩下的就是 BinarySerializer,并实现 ISerializable 接口以应对前向兼容性。

它是否正确?

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

4

2 回答 2

1

有了BinaryFormatter,可以用[OptionalField],不过这个还是很脆的。

protobuf-net怎么样?做到了这一切,并且没有与 BinaryFormatter 相关的版本控制问题。由于它是基于谷歌的“protocol buffers”格式,所以它被设计成版本兼容和可扩展的(披露:我是作者,所以我可能有偏见)。

或者,DataContractSerializer支持字段序列化;只需[DataMember]针对您的字段而不是属性进行设置(需要 .NET 3.0)。

于 2009-04-16T11:35:58.217 回答
0

是的,您需要实现 ISerializable。

关键点如下

  • 实现 GetObjectData(SerializationInfo info, StreamingContext context)。在这里,您需要将密钥对添加到 info 对象中。
  • 实现序列化构造函数 MyClass(SerializationInfo info, StreamingContext context)。在这里,您需要从 info 对象中获取值。
于 2009-04-16T12:18:07.803 回答