我需要以这种形式生成协议缓冲区输出:
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的新手,所以可能会遗漏一些明显的东西。
答案 0 :(得分:1)
模式生成代码目前产生平坦输出;如果你想要嵌套输出,你可以简单地编辑生成的模式。