У меня есть приложение, которое обменивается данными по методу TCP/IP и должно сериализовать некоторые данные на устройство.Как сериализовать массив объектов смешанного типа с помощью MessagePack в C#
В приложении, я хотел бы сериализовать массив объектов смешанного типа, который включает в себя строку, двойной массив и некоторое целое ..etc. Например, я хотел бы сериализовать данные, где:
Данные = [размер, mainmsg]; где size - int16, а mainmsg - строка.
Я посмотрел на следующей ссылке http://wiki.msgpack.org/display/MSGPACK/QuickStart+for+C+Sharp
Мне кажется, что BoxingPacker будет сгенерировано исключение при распакованы, если у меня есть строка в моем массиве объектов.
Я хотел бы спросить, если у меня есть массив объектов смешанного типа, [5, "D1"], что бы лучше всего сделать, чтобы сериализовать с помощью msgpack (в C#)? (Этот пакет предназначен, не может изменить по сравнению с другими методами сериализации)
Прямо сейчас, я использую BoxingPacker упаковать мое целое, и использовать ObjectPacker упаковать мою строку, например:
size = 1;
msg = "D1"
BoxingPacker intpacker = new BoxingPacker();
packedsize = intpacker.Pack(size);
ObjectPacker packer = new ObjectPacker();
packedmsg = packer.Pack<String>(msg);
Тогда Я объединил двоичные данные (packedsize + packingmsg) вместе с помощью Buffer.BlockCopy.
Я ищу, если есть простой способ сделать это? Может быть, я чего-то не хватает, но я не мог найти ничего документального, кроме ссылки, которую я вставил выше. Любые рекомендации приветствуются.
Является ли дизайн вашего «массив объектов» гибкий, и все объекты, содержащиеся примитивными? – theMayer
привет, @ rmayer06 да все объекты содержали примитив. Заранее благодарны за Вашу помощь. – user2386301
Вы можете попробовать Буферы протоколов - разработаны, чтобы быть очень быстрыми и эффективными https://code.google.com/p/protobuf-net/ – theMayer