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

本文关键字:扩展 层次结构 中的 ProtoInclude typeof ProtoBuf-net child | 更新日期: 2024-11-05 01:47:22

我有一个类需要具有父级和祖父级的所有属性,但我不确定如何在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 中进行序列化继承的正确方法吗?帮帮我马克!

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

是的,这是在 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类型(而不是序列化现有模型),该类型只是以最简单的方式公开所需的数据 - 这可能意味着所有数据都在同一级别。

好的,这样就可以了!我做了虚拟测试,当你只执行父级的ProtoInclude语句时,GrandParent的所有ProtoMembers都将被序列化。这很好。