2017-02-25 65 views
2

我是從吉爾取代我的應用程序內部序列化到邦德C#的DateTime序列化與微軟的債券

我使用Ms Bond屬性切換簡單的類,一切正常,直到我得到一個DateTime。 然後我有一個字典KeyNotFound異常序列化過程中的錯誤。

我懷疑邦德不支持DateTime,是這樣嗎? 如果是這樣,爲什麼不實施? DateTime不是一個基本的類型,但添加一個自定義轉換器是不值得的,速度增益vs protobuf-net是最小的,我不需要泛型,只需簡單的快速de/serializer。

我希望我失去了一些東西,我真的想用邦德,但我需要一個簡單的工具也是如此,因爲一些基本的東西像一個日期或GUID是默認不支持我不能冒險打破了應用程序。 經過數小時的研究,我在這裏寫下了C#bond的年輕指南,並沒有清楚地提及什麼是什麼,什麼是不支持的。

回答

1

不,Bond中沒有內置時間戳類型。 Bond中的內置類型記錄在manual for the gbc compiler中。

對於GUID,有Bond.GUID,其中有implicit conversions往返於System.Guid。需要注意的是Bond.GUID生活bond.bond,所以如果你想從.bond文件指的這一點,你需要use Bond's import functionalityimport "bond/core/bond.bond"

有說明如何使用DateTime with a custom type alias的例子。

究其原因,在邦德沒有內置的時間戳類型是有這麼多不同的方法(和標準)爲代表的時間戳。還有一個類似的C++ example,顯示用boost::posix_time::ptime代表時間,突出顯示時間表示的各種不同方式。

我們的經驗是,項目通常已經有了,他們希望使用時間戳的表示,因此,我們建議使用一個轉換器,這樣就可以使用適合您的情況表示。

作爲一個附註,我的經驗是DateTimeOffset是一個更普遍有用的類型,與DateTime相比。