我如何夸大Protobuf扩展?

时间:2014-02-12 11:03:46

标签: c# protocol-buffers protobuf-net

message base
{
    required int32 cmd = 1;
    extensions 1000 to max;  
} 

message derived
{
    extend   base{ required derived test = 1001; }
    required int32 a = 1;

    extensions 1000 to 3000;  
}

message derived2
{
    extend   derived{ required derived2 b = 1001; 
    required int32 b = 1;
}

考虑到这是proto文件。

在C#中创建derived2 protobuf对象时,如何对derived.a和base.cmd进行膨胀?

考虑到解决方案将涉及protobuf / protobuf-net库

1 个答案:

答案 0 :(得分:0)

protobuf-net目前对extend / extensions没有大量支持。 的内容是让您访问此类型的未知成员,只要该类型在反序列化时具有放置该信息的位置。如果你是从protogen开始的,那么情况应该是这样 - 否则,最简单的选择是将你的POCO改为继承Extensible。完成后,Extensible.GetValue<T>提供了一种通过其字段编号访问未声明成员的基本机制。