2015-11-06 10 views
1

Как .NetProtoBufProtoMember Работа в цепочке наследования? Например, посмотрите на следующие классы.Атрибут ProtoBuf ProtoMember, унаследованный значением тега в C#

[ProtoContract] 
public class BaseClass 
{ 
    [ProtoMember(1)] 
    public int Id { get; set; } 
    [ProtoMember(2)] 
    public string Name { get; set; } 
} 

[ProtoContract] //required? 
public class DerivedClass : BaseClass 
{ 
    [ProtoMember(3)] //can tag value be 1 ? 
    public string Category { get; set; } 
} 

Вопросы упоминаются в коде в строке.

(1) Нужно ли мне маркировать производный класс ProtoContract, если базовый класс уже ProtoContract?
(2) Для свойств производного класса можно ли повторно использовать значения тегов (int) ProtoMember, уже используемые в свойствах базового класса?

ответ

3

(1) Нужно ли мне отмечать производный класс ProtoContract, если базовый класс уже ProtoContract? Да, но вы также должны установить порядок получения типа

(2) Что касается свойств производного класса, могу ли я повторно использовать значения тегов (int) ProtoMember, которые уже использовались в свойствах базового класса? да, вы можете начать с 1 в производном классе

+0

Спасибо за быстрый ответ. Не могли бы вы немного рассказать об этом? * «Да, но вы также должны установить порядок получения типа» *? –

+1

Убедитесь, что вы должны добавить атрибут '[ProtoInclude (intOrder, typeof (DerivedClass))]' для базового типа; или использовать статический класс 'RuntimeTypeModel' для другого способа сопоставления –

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