一個的DateTimeOffset設置時,當我保存在我的項目設置的DateTimeOffest
失去精度,我失去了一些精度: 節省項目設置
第一個變量是原始值,系列化之前。 第二個是反序列化後的值。
其實我的變量序列化這樣的配置文件:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<userSettings>
<MyApp.Properties.Settings>
[...]
<setting name="LatestCheckTimestamp" serializeAs="String">
<value>02/22/2013 14:39:06 +00:00</value>
</setting>
[...]
</MyApp.Properties.Settings>
</userSettings>
</configuration>
有沒有指定某些系列化參數來提高精度的方法嗎?
我知道我可以使用一些解決方法,例如通過存儲Ticks和偏移值或類似的東西,但我想知道是否沒有更好的方法。
編輯: 更多信息:我使用的是標準的Visual Studio項目設置存儲我的價值:
MyApp.Settings.Default.LatestCheckTimestamp = initialLatestCheckTimestamp;
MyApp.Settings.Default.Save();
MyApp.Settings
是當你在項目屬性編輯設置由Visual Studio生成的類頁。
編輯2:解決方案:
基礎上馬特·約翰遜的答案,這是我做過什麼:
- 改名從
LatestCheckTimestamp
設置以LatestCheckTimestampString
但沒有在我的代碼 - 在獨立文件中添加以下包裝以完成部分類
Settings
:
。
public DateTimeOffset LatestCheckTimestamp
{
get { return DateTimeOffset.Parse(LatestCheckTimestampString); }
set { LatestCheckTimestampString = value.ToString("o"); }
}
新的配置文件如下:
<configuration>
<userSettings>
<MyApp.Properties.Settings>
[...]
<setting name="LatestCheckTimestampString" serializeAs="String">
<value>2013-02-22T16:54:04.3647473+00:00</value>
</setting>
</MyApp.Properties.Settings>
</userSettings>
</configuration>
...和我的代碼仍然是
MyApp.Settings.Default.LatestCheckTimestamp = initialLatestCheckTimestamp;
MyApp.Settings.Default.Save();
您打算支持多個Windows用戶嗎?如果是這樣,每個人都有自己的「上次檢查時間」,或在他們之間共享? ApplicationSettingsBase(Settings類的派生類)存在的問題之一是它不允許寫入應用程序作用域設置(儘管有解決方法)。 – jerry 2013-02-22 18:40:35
@jerry我的設置是用戶範圍。沒有問題。感謝您的詢問。 – JYL 2013-02-22 21:27:17