Подклассы в protobuf.net - PullRequest
       17

Подклассы в protobuf.net

2 голосов
/ 06 февраля 2011

У меня есть система, построенная вокруг protobuf.net, система предоставляет абстрактный класс (foo), который, как я ожидаю, будет реализовывать конечный пользователь.Абстрактный класс сериализуется по protobuf.net.В настоящее время, когда я пытаюсь сериализовать реализацию foo, я получаю сообщение об ошибке:

При сериализации обнаружен неожиданный тип;типы должны быть включены в ProtoIncludeAttribute;found bar передается как foo

Это имеет смысл, я не говорил системе о bar, поэтому, когда я пропускаю bar как foo, он запутывается.Есть ли удобный способ настроить все так, чтобы программисту было проще использовать мою библиотеку (желательно просто помечать поля как сериализуемые, как при обычном использовании protobuf.net?

Редактировать: Очевидно, я не могу использовать protoinclude, так как это требует изменения исходного кода базовой библиотеки.

1 Ответ

1 голос
/ 07 февраля 2011

В v1, база должна быть украшена, чтобы знать о детях.В v2 это ограничение снято;Вы можете создать модель во время выполнения и определить все, что вы хотите.Он по-прежнему может читать атрибуты, все это параллельно (вы можете использовать разные подходы для разных типов, если хотите).

Однако вы можете скрыть детали RuntimeTypeModel за своими собственнымиAPI, если вызывающий не хочет знать никаких подробностей.

v2 доступен для сборки из транка и довольно стабильный - хотя есть некоторые элементы TODO - в основном, крайние случаи, которые необходимо завершить длясовместимость.Большинство людей не увидят эти случаи.

...