Protobuf net 原始Buf继承问题

Protobuf net 原始Buf继承问题,protobuf-net,Protobuf Net,我有一个三级继承图。 ProtoBuf 2.0.0.611 QueryRequest VenueQueryRequest VenueQueryRequestV1 都标有 [DataContract, System.Serializable, ProtoBuf.ProtoContract] QueryRequest包括: [ProtoInclude(10, typeof(VenueQueryRequest))] [ProtoInclude(11, typeof(VenueQueryReques

我有一个三级继承图。 ProtoBuf 2.0.0.611

QueryRequest
VenueQueryRequest
VenueQueryRequestV1
都标有

[DataContract, System.Serializable, ProtoBuf.ProtoContract]
QueryRequest包括:

[ProtoInclude(10, typeof(VenueQueryRequest))]
[ProtoInclude(11, typeof(VenueQueryRequestV1))]
当我为VenueQueryRequestV1调用SerializeWithLength前缀时,我得到“未知子类型:VenueQueryRequestV1”

如果我在打电话之前添加(而不是替换)

RuntimeTypeModel.Default[typeof(QueryRequest)].AddSubType(10, typeof(VenueQueryRequest));
RuntimeTypeModel.Default[typeof(QueryRequest)].AddSubType(11, typeof(VenueQueryRequestV1));
我得到“检测到重复的字段号;10 on:Designertech.AzureServices.Messages.QueryRequest” 如果我只加上第二个,我会得到同样的错误,但是是11而不是10

如果我替换,我将得到原始错误

这让我觉得它应该知道子类型

我是不是有可能把事情搞砸了? 目前,只有基类声明了任何属性

[ProtoMember(1)]
IList<string> RequestedFields
[原成员(1)]
IList请求字段
这让我快发疯了


另一方面,这被用于生成要输入CloudFX Azure服务总线框架的消息。

每个级别只需要通知直接子类型:

[ProtoContract, ProtoInclude(10, typeof(VenueQueryRequest))
Class QueryRequest {...}

[ProtoContract, ProtoInclude(11, typeof(VenueQueryRequestV1))
Class VenueQueryRequest : QueryRequest {...}

[ProtoContract]
class VenueQueryRequestV1 : VenueQueryRequest {...}

知道它会在某处盯着我的脸。非常感谢。