是否可以将ProtoBuf-Net与ISerializable机制一起使用?

时间:2010-02-04 15:34:14

标签: c# protobuf-net

我们有一个项目,它通过实现ISerializable和使用BinaryFormatter来使用序列化。我们正在转向.net compact,它没有BinaryFormatter类。我想知道我们是否可以使用ProtoBuf-Net。我们可以指示ProtoBuf-Net使用GetObjectData()进行序列化吗?具体来说,我想了解如何使用Serializer.Serialize(SerializableInfo,ISerializable)函数。

加 我查看了源代码,我看到了虽然函数

Serializer.Serialize(SerializableInfo,T t)其中T是可ISerializable 不使用约束T根本就是ISerializable。为什么T被宣布为ISerializable?

1 个答案:

答案 0 :(得分:2)

ISerializable支持存在(目前)作为将protobuf-net注入使用BinaryFormatter的现有API中间的机制 - 例如,您可以这样做以减少开销.NET远程处理或(序列化)会话状态。但是,这仍然导致pb-net BLOB位于BinaryFormatter包装器的中间(特别是,bf头指定具体类型的assembly-qualfied-name)。

关于约束的问题 - 这只是为了帮助指导使用;该API仅预期用作BinaryFormatter通过ISerializable注入的一部分。否则,最好只使用基于Stream的API。

如果您正在查看CF,那么当然BinaryFormatter不再有用,但基于Stream的API很好。它适用于CF,但你应该注意到,对于具有大量类的模型,由于过度使用泛型(“缺少方法”或某些类似的东西)导致CF上存在一些故障。好消息是我正在进行一些重构的good progress,这使得它在较小的框架上更加稳定。

相关问题