2014-09-24 1 views
1

Я новичок в protobuf-net и задаюсь вопросом, есть ли возможность влиять на то, какие объекты сериализуются, если у меня есть граф объектов и вы хотите сериализовать только его части , Я думаю о каком-то обратном вызове или тому подобном.protobuf-net: callback для определения того, какие объекты сериализуются

ответ

1

Два стандартных (используемый другими системами) шаблоны поддерживаются для условного сериализации - если мы имеем:

public Foo SomeProperty {get;set} 

Тогда либо из:

public bool ShouldSerializeSomeProperty() {...} 

Или:

public bool SomePropertySpecified { 
    get {...} 
    set {...} 
} 

Должен работать нормально. Верно true для сериализации, false для игнорирования. В зависимости от вашей целевой структуры она также может быть непубличной, если это необходимо.

+0

Означает ли это, что класс, объявляющий свойство SomeProperty, также должен объявлять ShouldSerializeSomeProperty() или SomePropertySpecified, соответственно? – Ralf

+0

@ Верно, что это уже установленный ранее существующий (pre-dating protobuf-net) шаблон, который в настоящее время поддерживается. Обратите внимание, что через 'RuntimeTypeModel' вы можете установить методы как * любые * методы экземпляра/аксессоры на объекте (без форсирования какого-либо конкретного соглашения), но да: они должны быть объявлены типу, которому принадлежат данные. Конечно, если это неудобно, вы можете использовать суррогат сериализации * - protobuf-net поддерживает обмен между 2 связанными представлениями во время сериализации, если некоторые типы в модели менее удобны для сериализации, чем остальные –

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