Ich habe einige Code wie folgt aus:Warum muss ich JValue explizit auf einen Zieltyp umwandeln, bevor ich es verwende?
var jsonSerializer = new JsonSerializer();
var json = @"{ ""LastModifiedTime"": ""2013-04-19T18:18:09+03:00"" }";
var result = jsonSerializer.Deserialize<dynamic>(new JsonTextReader(new StringReader(json)));
File.SetLastWriteTime("c:/temp/somefile.txt", result.LastModifiedTime);
aber das gibt mir (zur Laufzeit, da wir hier über dynamische sprechen):
RuntimeBinderException
The best overloaded method match for 'System.IO.File.SetLastWriteTime(string, System.DateTime)' has some invalid arguments
Das fühlt sich ein bisschen dumm. Für mich ist ein bisschen der Punkt der Dynamik zu nicht müssen explizit Typen angeben und so weiter; Dies sollte (im Idealfall) von der Laufzeit übernommen werden. Natürlich kann es für JSON.NET etwas schwierig sein zu wissen, was es in einer bestimmten Situation tun sollte ...
James (oder jemand anders, der mit den JSON.NET-Interna vertraut ist), ist das Absicht? Wenn ich ein Handbuch Datetime wie folgt insg:
File.SetLastWriteTime("c:/temp/somefile.txt", (DateTime) result.LastModifiedTime);
... alles funktioniert gut.
Danke. Um ehrlich zu sein, erklärt die Seite, auf die ich mich beziehe, keines der "Warum", warum es so ist (es gibt überhaupt nicht zu viele Informationen). Google gab mir weitere Details, aber die Seite, mit der ich verlinkt bin, sagt leider nicht alles. Hier ist auch eine andere Frage mit einigen Details: http://stackoverflow.com/questions/8067621/why-do-i-get-a-runtimebinderexception-using-json-net-with-dynamic-when-calling-a –