Newtonsoft JSON - Objetos Dinâmicos
Estou usando a biblioteca Newtonsoft JSON para executar a desserialização dinâmica no JSON bruto de entrada e encontrei algo que simplesmente não consigo explicar.
O ponto de partida é a seguinte string JSON:
{
"task": {
"dueDate": "2012-12-03T00:00:00"
}
}
Nada muito complexo lá ...
No código, estou fazendo isso:
var dyn = JsonConvert.DeserializeObject<dynamic>(rawJson);
DateTime dueDate = dyn.task.dueDate.Value;
Este código está em vigor há meses e funciona bem, no entanto, em uma versão de teste recente, estávamos vendo o seguinte erro:
'Newtonsoft.Json.Linq.JObject' não contém uma definição para 'tarefa'
Rastreamento de pilha: no CallSite.Target (Closure, CallSite, Object) em System.Dynamic.UpdateDelegates.UpdateAndExecute1 [T0, TRet] (site do CallSite, T0 arg0)
Agora é onde fica estranho, tudo começa a funcionar novamente se eu mudar o código acima de:
DateTime dueDate = dyn.task.dueDate.Value;
para
DateTime dueDate = dyn["task"]["dueDate"].Value;
Então, embora isso seja "consertado", não entendo por que isso conserta e qual seria a causa possível. Alguém tem alguma ideia