2016-04-21 2 views
1

У меня есть класс, который должен иметь все свойства родителя и дедушки и бабушки, но я не уверен, как структурировать это в protobuf-net.Как [ProtoInclude (20, typeof (child))] в 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; 
} 

Это должно сериализовать всех членов целочисленные ProtoMember при попытке сериализации экземпляра класса ребенка, насколько я знаю.

Правильно ли это сделать наследование сериализации в protobuf-net? Помогите мне Марк!

ответ

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 (а не сериализации существующей модели), которая просто предоставляет необходимые данные в самый простой способ - который , вероятно, означает все на том же уровне.

0

Хорошо, так что это сработает! Я сделал фиктивные тесты, и все протоплантеры из GrandParent будут сериализованы, когда вы сделаете только утверждение ProtoInclude для родительского элемента . Это приятно.

 Смежные вопросы

  • Нет связанных вопросов^_^