Newtonsoft JSON - obiekty dynamiczne

Używam biblioteki Newtonsoft JSON do wykonywania dynamicznej deserii w przychodzącym surowym JSON i znalazłem coś, czego po prostu nie potrafię wyjaśnić.

Punktem wyjścia jest następujący ciąg JSON:

{
  "task": {
    "dueDate": "2012-12-03T00:00:00"
  }
}

Nic tam nie jest zbyt skomplikowane ...

W kodzie robię to:

var dyn = JsonConvert.DeserializeObject<dynamic>(rawJson);
DateTime dueDate = dyn.task.dueDate.Value;

Ten kod działa od miesięcy i działa dobrze, jednak w niedawnej wersji testowej wystąpił następujący błąd:

„Newtonsoft.Json.Linq.JObject” nie zawiera definicji „zadania”

Śledzenie stosu: w CallSite.Target (Closure, CallSite, Object) w System.Dynamic.UpdateDelegates.UpdateAndExecute1 [T0, TRet] (strona CallSite, T0 arg0)

Teraz jest dziwne, wszystko zaczyna działać ponownie, jeśli zmienię powyższy kod z:

DateTime dueDate = dyn.task.dueDate.Value;

do

DateTime dueDate = dyn["task"]["dueDate"].Value;

Tak więc, chociaż jest to „naprawione”, nie rozumiem, dlaczego to rozwiązuje i jaka może być możliwa przyczyna. Czy ktoś ma jakieś pomysły

questionAnswers(6)

yourAnswerToTheQuestion