Мы используем protobuf.net для сериализации классов между мобильными устройствами и серверными службами, но теперь нам нужно настроить то, что отправляется обратно клиенту, в зависимости от «контекста» пользователя.
Обычно мы делаем это, реализуя интерфейс ISerializable и просматривая значение контекста, чтобы затем решить, что сериализовать. Точно так же в конструкторе мы десериализуем предоставленные значения.
Но может показаться, что ISerializable не реализован/не поддерживается (я понимаю, почему) для protobuf.net, поэтому мы обошли это, выбрав подходы «ShouldSerialize*» и «OnSerializing». Однако это означает, что в конечном итоге нам придется хранить StreamingContext в каждом классе, что кажется неправильным. Потенциально мы могли бы вставить его в глобальную систему, но это также кажется неправильным.
Есть ли лучший способ добиться того, чего мы хотим, например. сериализация только с использованием формата protobuf.net, но с чем сериализуется под влиянием внешнего контекста?