私はこのようなPOCOを持っています:
public class BlogEntry
{
public string Title { get; set; }
public DateTime Date { get; set; }
}
ほとんどの場合、Entity Framework からハイドレートされていますが、Entity Framework の外部で使用することもできますし、今後も使用する予定です。
EF からの日付の DateTimeKind は指定されていません。これは、私が読んだものから正常です。
この POCO を (ServiceStack Redis クライアントを使用して) Redis にキャッシュすると、Local の DateTimeKind が返されます。
そのため、返されたオブジェクトにはジッターがあります。最初のパス (キャッシュされていない) には、オフセットのない ISO-8601 があります (DateTimeKind.Unspecified)。2 番目のパス (キャッシュ) は、オフセット付きの ISO-8601 です (DateTimeKind.Local を使用した Redis から)。
ServiceStack JSONシリアライザに日付を常に特定のDateTimeKindとして解釈させる方法はありますか? (「JsConfig.AppendUtcOffset」プロパティがあることは知っていますが、それが true であろうと false であろうと、値は決して変化しませんか?)
または、型指定された RedisClient からの逆シリアル化プロセスのどこかで、DateTimeKind をローカルにしますか?
POCO を手動で変更して DateTimeKind を強制することはできますが、それは機能しますが、エラーが発生しにくいものを望んでいました。