Я использую библиотеку Newtonsoft JSON для выполнения динамической десериализации на входящем сыром JSON и обнаружил то, что я просто не могу объяснить.
Отправной точкой является следующая строка JSON:
{
"task": {
"dueDate": "2012-12-03T00:00:00"
}
}
Здесь нет ничего сложного...
В коде я делаю следующее:
var dyn = JsonConvert.DeserializeObject<dynamic>(rawJson);
DateTime dueDate = dyn.task.dueDate.Value;
Этот код существует уже несколько месяцев и отлично работает, однако в недавней тестовой сборке мы обнаружили следующую ошибку:
'Newtonsoft.Json.Linq.JObject' не содержит определения для 'task'
Трассировка стека: в CallSite.Target(Closure, CallSite, Object) в System.Dynamic.UpdateDelegates.UpdateAndExecute1 [Т0, Tret] (CallSite сайт, T0 arg0)
Теперь это где странно, все начинает работать снова, если я изменил код выше:
DateTime dueDate = dyn.task.dueDate.Value;
к
DateTime dueDate = dyn["task"]["dueDate"].Value;
Итак, хотя это "исправлено", я не понимаю, почему это исправление и какова возможная причина. Кто-нибудь есть идеи