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

questionAnswers(6)

yourAnswerToTheQuestion