我的基本设置是:
//caller
dynamic thingThatEndsUpBeingAJObject = JsonConvert.DeserializeObject(await httpClientResponse.Content.ReadAsStringAsync());
var parsedThing = Parse(thingThatEndsUpBeingAJObject);
//elsewhere...
private async Task<ParsedThing> Parse(dynamic json)
{
dynamic referenceToThingIWant = json.ThingIWant;
return new ParsedThing{ SomeProp = referenceToThingIWant; }
}
...我最终在对json.ThingIWant的引用上获得了RuntimeBinderException。
奇怪的是,如果我把手表放在:
((JObject)json)["ThingIWant"]
我可以看到它在那里很好!
更令人困惑的是,代码在其他所有人的机器上运行良好(我相信它在我的用户运行良好,直到几天前)!
究竟是什么导致这种奇怪的怪癖?!?
我已经离开了重启计算机,FWIW。
特定错误/堆栈跟踪是:
'Newtonsoft.Json.Linq.JObject' does not contain a definition for 'ThingIWant'
at Microsoft.CSharp.RuntimeBinder.RuntimeBinderController.SubmitError(CError pError)