Dictionary
должен в основном просто работать (по крайней мере, в «v1»; я еще не писал этого для «v2»).
Я полностью признаю, что документации ... немного. В голову приходят следующие вещи:
У меня сейчас много событий (я только что сменил работу и т. д.), но мои приоритеты:
Время - мой самый большой враг. Но если у вас есть конкретный сценарий, не стесняйтесь связаться со мной, и я постараюсь вернуться к вам как можно скорее.
Re "можно просто воткнуть"; это зависит от вашего кода ;-p
Требуется некоторый способ определения уникального номера для каждого члена, который вы хотите сериализовать. Самый простой способ сделать это - использовать атрибуты; он поддерживает любой из [XmlElement (Order = n)]
, [DataMember (Order = n)]
или [ProtoMember (n)]
. Если у вас уже есть хотя бы один из них (например, LINQ-to-SQL включает [DataMember]
), он может просто работать.
Есть есть параметры для автоматического вывода чисел, но это непостоянно и не рекомендуется. Используйте это только в том случае, если вы знаете , что вам никогда не нужно добавлять новых участников (они упорядочиваются в алфавитном порядке, поэтому добавление нового AardvarkCount
сломает все).
В версии "v2" (не выпущен, но работает) теперь вы можете обрабатывать метаданные независимо от типов, то есть вы можете использовать protobuf-net с POCO, без атрибуции типов. Вы также можете обойти конструкторы и т. Д. (Стиль WCF). Гораздо более гибкие, если хотите. Конечно, поддерживается и атрибутивный подход.
Как ни странно, я только что ответил на другой вопрос, указав ссылку на protobuf-net .
Мне показалось, что это относительно просто сделать, а Марк очень быстро реагирует на запросы по электронной почте. (Хехе, извините, если я приглашаю людей спамить вам вопросами!)
Что касается документации, я упомянул, что она была немного скудной. Но вот для чего я его использовал:
У меня была система обмена сообщениями на основе XML, которая была слишком многословной. Поэтому я хотел заменить сообщения чем-то, что закодировало бы ту же информацию, но гораздо более компактно. Protobuf-net оказался идеальным для этого, и я не заменил свой модуль на основе xmlserialzer на модуль на основе прототипа.
Это было довольно просто. Я просмотрел свой проект, заменив [XmlInclude] и подобные атрибуты на [ProtoInclude], и, конечно же, я заменил сериализатор xml на сериализатор прото. Одна или две проблемы относительно того, какие типы могут быть сериализованы, были решены с помощью Марка, и не очень много рефакторинга кода.