我有一个 3 级继承图。ProtoBuf 2.0.0.611
QueryRequest
VenueQueryRequest
VenueQueryRequestV1
都标有
[DataContract, System.Serializable, ProtoBuf.ProtoContract]
查询请求包括:
[ProtoInclude(10, typeof(VenueQueryRequest))]
[ProtoInclude(11, typeof(VenueQueryRequestV1))]
当我为 VenueQueryRequestV1 调用 SerializeWithLengthPrefix 时,我得到“未知子类型: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
这让我发疯了。
顺便说一句,这用于生成要馈送到 CloudFX Azure 服务总线框架的消息。