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



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

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

在c#中,无论我是分别定义时间表和点类,还是以嵌套类别的形式定义点类,我都无法从调用serialialser.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的新手,因此很可能会缺少明显的东西。

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

最新更新