首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >protobuf-net :如何在消息中表示继承并生成派生类?

protobuf-net :如何在消息中表示继承并生成派生类?
EN

Stack Overflow用户
提问于 2016-10-05 22:52:29
回答 1查看 3.6K关注 0票数 1

protobuf-net proto2 c#

下面是我的.cs文件,用于protobuf-net序列化/反序列化:

代码语言:javascript
运行
复制
[ProtoBuf.ProtoContract(Name=@"MyBaseTypeProto")]
[ProtoBuf.ProtoInclude(typeof(MyDerivedType), 1)]
public partial class MyBaseType { ... }

[ProtoBuf.ProtoContract(Name=@"MyDerivedTypeProto")] 
public partial class MyDerivedType : MyBaseType { ... }

[ProtoBuf.ProtoContract(Name=@"MyMessageProto")]                                                                  
public partial class MyMessage                                          
{                                                                                               
    [ProtoBuf.ProtoMember(1, IsRequired = false, Name = @"MyList", DataFormat = ProtoBuf.DataFormat.Default)]                                                 
    public List<MyDerivedType> MyList;  

是否可以组合.proto文件,以便protogen.exe生成上述内容?

类似于:

代码语言:javascript
运行
复制
MyBaseType.proto
message MyBaseType {
    ...
}

MyDerivedType.proto
message MyDerivedType {
    ...
}

MyMessage.proto
import "MyDerivedType.proto"
message MyMessage{                                                                          
    repeated MyDerivedType MyList = 1;                                                          
}    

但是,应用于上述消息类型的protogen.exe不会按需要生成上述类;具体来说,它不会生成以下代码行:

代码语言:javascript
运行
复制
[ProtoBuf.ProtoInclude(typeof(MyDerivedType), 1)]

public partial class MyDerivedType : MyBaseType
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-06 17:17:41

协议缓冲区不支持继承,其形式类似于(或映射到) C++/C#/Java中的直观继承。

请参阅这里

消息也可以扩展,但是实现这一点的方法不同于熟悉的C++或Java风格的继承。相反,消息扩展是通过在基本消息中保留一些字段索引来实现的,以供扩展消息使用。

协议缓冲文档说:

扩展允许您声明消息中的字段号范围可用于第三方扩展。然后,其他人可以在自己的.proto文件中使用这些数字标记为您的消息类型声明新字段,而不必编辑原始文件。

第一篇文章还讨论了其他几种近似多态性的技术,以及每种技术的优缺点。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39884889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档