ProtoBuf-net中的[ProtoInclude(20,typeof(child))]如何扩展类层次结构树?

时间:2016-04-21 15:15:16

标签: c# .net protocol-buffers protobuf-net

我有一个课程需要拥有父母和祖父母的所有属性,但我不知道如何在protobuf-net中构建它。

貌似我应该只能说:

public class Child : Parent {
   [ProtoMember(1)]
   int childInt;
}

[ProtoInclude(2, typeof(Child))]
public class Parent : GrandParent{
   [ProtoMember(1)]
   int parentInt;
}

[ProtoInclude(2, typeof(Parent))]
public class GrandParent {
   [ProtoMember(1)]
   int grandParentInt;
}

据我所知,当我尝试序列化Child类的一个实例时,应该序列化所有ProtoMember整数成员。

这是在protobuf-net中进行序列化继承的正确方法吗? 帮帮我Marc!

2 个答案:

答案 0 :(得分:1)

是的,这是处理protobuf-net中继承的可接受方式。它肯定会工作。在protobuf术语中,将实现类似

message GrandParent {
    int grandParentInt = 1;
    optional Parent parent = 2;
}
message Parent {
    int parentInt = 1;
    optional Child child = 2;
}
message Child {
    int childInt = 1;
}

然而,就个人而言,我很想介绍一种DTO类型(而不是序列化您现有的模型),它只是以最简单的方式公开所需的数据 - 可能意味着所有相同的水平。

答案 1 :(得分:0)

好的,这样才行!我进行了虚拟测试,当您执行 Parent的ProtoInclude语句时,所有 ProtPant的GrandParent 将被序列化。这很好。