繁体   English   中英

使用protobuf-net序列化时嵌套消息

[英]Nesting messages when serializing using protobuf-net

我需要以这种形式产生协议缓冲区输出:

message TimeSeries {
    message Point {
        required int64 DateTime = 1;
        required double Value = 2;
    }
    repeated Point Points = 3;
}

在C#中,无论我是分别定义TimeSeries和Point类,还是将Point作为嵌套类,都无法从调用Serializer.GetProto生成该层次结构来得到结果输出。

我认为这将产生预期的结果:

[ProtoContract]
public class TimeSeries 
{
    [ProtoMember(1, IsRequired = true)]
    public List<Point> Points { get; set; }

    [ProtoContract]
    public class Point
    {
        [ProtoMember(1, IsRequired = true)]
        public Int64? DateTime { get; set; }

        [ProtoMember(2, IsRequired = true)]
        public Double? Value { get; set; }
    }
}

相反,我得到:

message Point {
   required int64 DateTime = 1;
   required double Value = 2;
}
message TimeSeries {
   repeated Point Points = 1;
}

我是协议缓冲区和protobuf-net的新手,所以很可能会缺少明显的东西。

模式生成代码当前产生平面输出; 如果要嵌套输出,则可以简单地编辑生成的模式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM