protobuf.net наследование-использование ImplicitFields = ImplicitFields.Все поля
У меня есть базовый класс, который украшен [ProtoContract(ImplicitFields = ImplicitFields.AllFields)]
Чтобы иметь возможность сериализовать производный класс, мне нужно только добавить ProtoInclude? поскольку производные поля класса не сериализуются - работает ли наследование только с Protomember?
1 ответ:
Protobuf не полностью поддерживает наследование вам нужно сделать небольшое украшение в вашем базовом классе.
[ ProtoContract(), ProtoInclude(100, typeof(Peer)), ProtoInclude(101, typeof(Instruction)) ] class Base {...} [ProtoContract()] class Peer: Base { ... } [ProtoContract()] class Instruction: Base { ... }
Для производных классов, которые предоставляют свойства только через базовый класс.