gpt4 book ai didi

protobuf-net - Proto-Buf 继承问题

转载 作者:行者123 更新时间:2023-12-02 00:14:43 25 4
gpt4 key购买 nike

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

QueryRequest
VenueQueryRequest
VenueQueryRequestV1

全部标有

[DataContract, System.Serializable, ProtoBuf.ProtoContract]

QueryRequest 包括:

[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 服务总线框架的消息。

最佳答案

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

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

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

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

关于protobuf-net - Proto-Buf 继承问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13791481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com