Я много занимался поиском, но не нашел ничего, что могло бы объяснить мою проблему, которая, я не сомневаюсь, тривиальна.
Я импортировал Json.NET 12.0.1 в свой проект изNuGet.
В приведенном ниже коде строка
Console.WriteLine(json.Value<DateTimeOffset>("DateTime"));
выбрасывает
неверное приведение из 'System.DateTime' кИсключение 'System.DateTimeOffset'
, как прокомментировано.
Итак, почему я могу явно привести
json["DateTime"]
или json.Value<DateTime>("DateTime")
к DateTimeOffset
но не использовать json.Value<DateTimeOffset>("DateTime")
?
using Newtonsoft.Json.Linq;
using System;
namespace JSONDates
{
class Program
{
static void Main(string[] args)
{
string dt = "2019-04-21T18:27:21.225+01:00";
string jsonString = string.Format("{{\"DateTime\": \"{0}\"}}", dt);
JObject json = JObject.Parse(jsonString);
Console.WriteLine(json.Value<DateTime>("DateTime")); //OK
Console.WriteLine((DateTimeOffset)json.Value<DateTime>("DateTime")); //OK
Console.WriteLine(((DateTimeOffset)json["DateTime"])); //OK
Console.WriteLine(json.Value<DateTimeOffset>("DateTime")); //{"Invalid cast from 'System.DateTime' to 'System.DateTimeOffset'."}
Console.ReadLine();
}
}
}