Наследование и известная проблема типа - PullRequest
2 голосов
/ 03 ноября 2011

Я пытаюсь использовать protobuf .net для сериализации экземпляра класса, который унаследован от базового класса.При попытке сериализации \ десериализации я получаю исключение "тип не ожидается".Как я уже читал, добавление protoinclude с производным типом к базе решит проблему.НО, моя проблема в том, что я не могу добавить атрибут, так как я не знаю типы, которые будут определять мою базу.Как я уже читал, я понимаю, что V2 предоставит способ определения модели типов для описания наследования.Итак, мои вопросы:

  1. Когда выйдет версия V2?
  2. Есть ли временное решение для решения этой проблемы?

Спасибозаранее

Гил

1 Ответ

0 голосов
/ 03 ноября 2011

V2 доступен как из nuget, так и из google-кода (nuget на несколько оборотов впереди IIRC - и оба немного позади).Есть несколько функций v1, которые еще не реализованы, но в большинстве случаев вы этого не заметите.Они будут добавлены в свое время.

Re ваша проблема;это доступно через MetaType.AddSubType - однако, чтобы использовать этот подход, вы должны иметь возможность воспроизводить те же самые int-идентификаторы для каждого подтипа в будущем - они являются важными ключами и не должны изменяться.

RuntimeTypeModel.Default[typeof(SomeType)].AddSubType(7, subType);

Тамтакже имеется DynamicType, доступный для свойств «объекта» - однако это имеет несколько недостатков в моделях на основе наследования;Я бы избежал этого пока (это тоже будет исправлено в ближайшее время).

...