2014-01-28 63 views
1

我具有產生這種形式的協議緩衝器輸出的要求:嵌套消息使用序列化時protobuf網

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

在C#,不管我是否單獨地或與點限定時間序列和點類作爲嵌套類,我不能從調用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網,所以很可能是失去了一些東西明顯。

回答

1

模式生成代碼當前生成平坦輸出;如果你想嵌套輸出,你可以簡單地編輯生成的模式。

+0

感謝Marc的快速反應。 –