2015-08-14 4 views
0

Я следующий общий словарь внутри класса я хочу, чтобы упаковать/распаковать с MsgPack:Вложенные Коллекции с MsgPack

public Dictionary<string, Object> values { get; set; }

Упаковка и распаковка работы Staight из коробки в общих случаях, но если новый словарь new Dictionary<string, Object> до значений словаря, например:

values.add("nested", nestedValues);

После распаковки nestedValues ​​имеет тип MsgPackObjectDictionary ш hich Я не могу преобразовать обратно в .NET Dictionary. Итак, как обрабатывать вложенные коллекции с помощью MsgPack?

EDIT:

Более определенные классы данных, кажется, один из способов обойти эту проблему: Deserialize a type containing a Dictionary property using ServiceStack JsonSerializer

ответ

0

Многие сериализаторов имеют проблемы обработки object типов, так как форматы сериализации не имеет понятия " runtime type ", поэтому десериализатор не имеет никакого представления о том, к чему он должен быть сериализован. Это прежде всего проблема со статическими языками, которые должны знать точный тип для десериализации, тогда как динамические языки могут оставить его как примитивное значение.

В сериализаторах, которые поддерживают object типов должны встраивать пользовательские расширения Serializer специфичного для встраивания этой дополнительной информации, которая в настоящее время соединяет полезную нагрузку для конкретной реализации сериализатора именно поэтому неизвестные типы как object и интерфейсы следует избегать при сериализации DTO (в Объекты передачи данных).

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