Protobuf сериализатор данных - PullRequest
1 голос
/ 21 января 2012

этот dataserializer отлично подходит для производительности. но я продолжаю застрять в столбцах данных с типом данных System.Object, в результате чего сериализатор создает исключение: не удается сериализовать столбец данных типа «System.Object».

есть ли способ обойти это?

Ответы [ 2 ]

1 голос
/ 21 января 2012

Формат protobuf разработан для сценариев, в которых данные являются предсказуемыми для получателя, и не очень хорошо подходит для сценариев «объектов», однако в зависимости от структуры данных возможны несколько вещей:

  • если данные «объекта» являются вложенным сообщением какого-либо вида, то вы можете пометить элемент как «DynamicType = true» как часть декорации ProtoMemberAttribute;затем он включает в себя некоторые метаданные, но как расширение, специфичное для protobuf-net.Он не будет очень переносимым между системами
  • , если данные «объекта» действительно являются одним из нескольких известных типов, обычно таких как int / DateTime / float и т. Д., Тогда есть несколько способов представить это с помощью наследования (неуниверсальный базовый тип, несколько определенных T подтипов).Опять же, это не будет очень переносимым между платформами

Я могу проиллюстрировать любой из них, если я понимаю модель больше.

0 голосов
/ 21 января 2012

С страница начала работы с protobuf-net

В отличие от XmlSerializer, имена членов не кодируются в данных - вместо этого вы должны выбрать целое число, чтобы идентифицировать каждого участника.

Другими словами, вам нужно помочь сериализатору, определив для каждого класса , как его сериализовать и десериализовать. Если действительно необходимо иметь возможность автоматически сериализовать все классы на основе System.Object, protobuf не для вас.

...