gpt4 book ai didi

Java Protobuf(版本 2.4.1)和 Protobuf-net(版本 r480)继承兼容性

转载 作者:行者123 更新时间:2023-12-01 05:19:13 38 4
gpt4 key购买 nike

是否可以使用 Java Protobuf 反序列化以下使用 Protobuf-net 序列化的 DerivedMessage?

namespace Test.Protobuf
{
[ProtoBuf.ProtoContract]
[ProtoBuf.ProtoInclude(2550, "Test.Protobuf.DerivedMessage")]
class BaseMessage
{
[ProtoBuf.ProtoMember(1)]
public string MessageId { get; set; }

[ProtoBuf.ProtoMember(2)]
public int CommandId { get; set; }
}

[ProtoBuf.ProtoContract]
class DerivedMessage : BaseMessage
{
[ProtoBuf.ProtoMember(1)]
public int ClientId { get; set; }

[ProtoBuf.ProtoMember(2)]
public string Message { get; set; }

[ProtoBuf.ProtoMember(3)]
public string Description { get; set; }
}
}

DerivedMessage 扩展了 BaseMessage,阅读文档该解决方案似乎在原始文件中使用嵌套消息但它不起作用,这是我的原型(prototype)文件:

package protobuf;

option java_package = "test.protobuf";
option java_outer_classname = "Proto";

message BaseMessage {
optional string message_id = 1;
optional int32 command_id = 2;
}

message DerivedMessage {
optional int32 client_id = 1;
optional string token = 2;
optional string message = 3;
optional string description = 4;
optional BaseMessage base_message = 5;
}

有解决办法吗?

谢谢

最佳答案

派生类是否不应该也有一个与父类具有相同ID的字段?在您的示例中,messageId 和 clientId 具有相同的标识符:1。

关于Java Protobuf(版本 2.4.1)和 Protobuf-net(版本 r480)继承兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10676468/

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