使用 ProtoBuf-Net 在网络上自描述消息

Self describing messages on network with ProtoBuf-Net

我想使用 protobuf-net 作为客户端和服务器之间的网络套接字通信协议。

一条消息可以有大约十几种不同的 class 类型(它们都扩展了相同的基础 class)。是否可以在知道确切类型之前解码消息?如何实现?

提前致谢

听起来像你想要的:

[ProtoContract]
[ProtoInclude(1, typeof(Foo)]
...
[ProtoInclude(N, typeof(Bar)]
class SomeBase {}

[ProtoContract]
class Foo : SomeBase {...}

...

[ProtoContract]
class Bar : SomeBase {...}

然后使用Deserialize<SomeBase>(...)。这将被映射为“.proto”术语中的oneof discriminated union。