C# DateTime Сериализация с Microsoft Bond

Я заменял внутреннюю сериализацию в своем приложении от Джила до Бонда.

Я переключаю простые классы с атрибутами Ms Bond, и все работало нормально, пока я не получил один с DateTime. У меня тогда была ошибка исключения KeyNotFound из словаря во время сериализации.

Я подозреваю, что Бонд не поддерживает DateTime, это так? И если это так, то почему не реализовано? DateTime не является базовым типом, но добавление пользовательского конвертера не стоит, выигрыш в скорости по сравнению с protobuf-net минимален, и мне не нужны дженерики, просто простой быстрый де-сериализатор.

Я надеюсь, что что-то упустил, я действительно хочу использовать Bond, но мне также нужен простой инструмент, я не могу рисковать сломать приложение, потому что что-то базовое, например Date или Guid, не поддерживается по умолчанию. Я пишу здесь после нескольких часов исследований, и в Young Guide to C# bond четко не указано, что есть, а что нет.

1 ответ

Решение

Нет, в Bond нет встроенного типа метки времени. Встроенные типы в Bond описаны в руководстве к компилятору gbc.

Для GUID есть Bond.GUID, который имеет неявные преобразования в / из System.Guid, Обратите внимание, что Bond.GUID живет в bond.bond, поэтому, если вы хотите сослаться на это из файла.bond, вам нужно использовать функциональность импорта Bond и import "bond/core/bond.bond"

Там есть пример, показывающий, как использовать DateTime с псевдонимом пользовательского типа.

Причина, по которой в Bond нет встроенного типа меток времени, заключается в том, что существует так много разных способов (и стандартов) для представления меток времени. Есть аналогичный пример C++, который показывает представление времени с boost::posix_time::ptime, подчеркивая различные способы представления времени.

Наш опыт показывает, что проекты обычно уже имеют представление для временных меток, которые они хотят использовать, поэтому мы рекомендуем использовать конвертер, чтобы вы могли использовать представление, соответствующее вашим обстоятельствам.

В качестве примечания, мой опыт показывает, что DateTimeOffset это более полезный тип по сравнению с DateTime,

Другие вопросы по тегам