2012-07-19 94 views
0

我正在處理引用c#WinRT項目的Windows 8 Metro應用程序。除此之外,c#項目向Azure服務發出了對Azure服務的Web請求,以對SQL Azure數據庫執行CRUD操作。WinRT序列化DateTimeOffset

當對服務執行POST操作時,我將序列化一個類的實例並將其放入請求的主體中。

public sealed class Foo 
{ 
    int FooId { get; set; } 
    DateTimeOffset FooDate { get; set; } 
} 

當這是使用DataContractJSONSerializer序列化,結果是這樣的:

{"FooId":1,"FooDate":{"DateTime":"/Date(1342732970000)/","OffsetMinutes":-420}} 

僅供參考,這是2012年7月19日下午2點22分50秒-07:00。

好的很好......唯一的問題是Azure服務期望的只是DateTime而不是DateTimeOffset。我不擁有Azure服務,因此我無法更改其行爲。

所以(忽略我失去了偏移)我需要的是這個序列化到:

{"FooId":1,"FooDate":"/Date(1342732970)/"} 

我的第一種方法是一個新的別名DateTime財產/數據成員添加到類吸氣劑返回DateTimeOffsetDateTime部分。但是,WinRT不支持DateTime類型。

有一對夫婦的哈克的方式來解決這個問題,但我想看看是否有一個優雅的方式訴諸這些人之前做到這一點:在POST之前

  • 正則表達式的系列化結果返回一個JSON格式的日期

感謝

回答

1

我最終實現的類屬性的類

  • 字符串屬性使用適當格式化日期的getter。

    我使用IgnoreDataMember屬性修飾了Foo字段,以便在序列化期間將其忽略。然後,我添加了一個新字段,併爲其序列化提供了Foo的別名。

    謝謝