C# 是否可以使用带有ISerializable机制的ProtoBuf网络?

C# 是否可以使用带有ISerializable机制的ProtoBuf网络?,c#,protobuf-net,C#,Protobuf Net,我们有一个通过实现ISerializable和使用BinaryFormatter来使用序列化的项目。我们正在转向没有BinaryFormatter类的.net compact。我想知道我们是否可以使用ProtoBuf网络。我们能否指示ProtoBuf Net使用GetObjectData()进行序列化?具体来说,我想了解如何使用Serializer.Serialize(SerializableInfo,ISerializable)函数 增加 我查看了源代码,通过函数 Serializer.Ser

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

增加 我查看了源代码,通过函数

Serializer.Serialize(SerializableInfo,T T),其中T是可序列化的
不使用约束t完全可以ISerializable。为什么T被声明为ISerializable

ISerializable支持(目前)作为一种机制存在,用于将protobuf net注入使用
BinaryFormatter
的现有API中间-例如,您可以这样做以减少.net远程处理或(序列化)会话状态的开销。但是,这仍然导致在<>代码> BinaryFormatter < /COD>包装器中间的PB网块(特别是,BF标头指定了具体类型的汇编限定名)。 关于约束的问题——这只是为了帮助指导使用;该API仅用于通过
ISerializable
注入到
BinaryFormatter
中。否则,最好只使用基于
流的API


如果您正在查看CF,那么当然,
BinaryFormatter
不再有用,但是基于
Stream
的API很好。它可以在CF上工作,但是您应该注意,对于具有大量类的模型,由于泛型的过度使用(“缺少方法”或类似情况),CF上目前存在一些小故障。好消息是,我正在进行一些重构,以避免这种情况,使其在较小的框架上更加稳定。

Hi Marc,感谢您回答这个问题。现在我明白了API的用途。它将在GetObjectData()中用于以proto buf格式存储结果数据。