プロジェクト設定にを保存するDateTimeOffest
と、精度が低下します。
最初の変数は、シリアル化前の元の値です。2つ目は、逆シリアル化後の値です。
実際、私の変数は設定ファイルで次のようにシリアル化されています:
<?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>
精度を上げるためにいくつかのシリアル化パラメーターを指定する方法はありますか?
ティックやオフセット値などを保存するなどの回避策を使用できることはわかっていますが、もっと良い方法がないかどうかを知りたいと思います。
編集:詳細:標準のVisual Studioプロジェクト設定を使用して値を保存しています:
MyApp.Settings.Default.LatestCheckTimestamp = initialLatestCheckTimestamp;
MyApp.Settings.Default.Save();
MyApp.Settings
プロジェクトのプロパティページで設定を編集するときにVisualStudioによって生成されるクラスです。
編集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();