ProtoBuf-net 中的 [ProtoInclude(20 ,typeof(child))] 如何向上扩展 class 层次结构树?
How does [ProtoInclude(20 ,typeof(child))] in ProtoBuf-net extend up the class hierarchy tree?
我有一个 class 需要具有 parent 和 grandparent 的所有属性,但我不确定如何构造这在 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 class 的实例时,这应该序列化所有 ProtoMember 整数成员。
这是在 protobuf-net 中进行序列化继承的正确方法吗? 马克帮帮我!
好的,这样就可以了!我进行了虚拟测试,当您只执行 Parent 的 ProtoInclude 语句时,GrandParent 的所有 ProtoMembers 都将被序列化。 这很好。
是的,这是在 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 类型(而不是序列化您现有的模型),它以最简单的方式简单地公开所需的数据 - 可能表示都在同一级别。
我有一个 class 需要具有 parent 和 grandparent 的所有属性,但我不确定如何构造这在 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 class 的实例时,这应该序列化所有 ProtoMember 整数成员。
这是在 protobuf-net 中进行序列化继承的正确方法吗? 马克帮帮我!
好的,这样就可以了!我进行了虚拟测试,当您只执行 Parent 的 ProtoInclude 语句时,GrandParent 的所有 ProtoMembers 都将被序列化。 这很好。
是的,这是在 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 类型(而不是序列化您现有的模型),它以最简单的方式简单地公开所需的数据 - 可能表示都在同一级别。