mam trochę kodu:Dlaczego muszę wyraźnie rzucić JValue na typ celu przed jego użyciem?
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);
Jednak to daje mi (w czasie wykonywania, ponieważ mówimy o dynamicznym tutaj):
RuntimeBinderException
The best overloaded method match for 'System.IO.File.SetLastWriteTime(string, System.DateTime)' has some invalid arguments
to czuje się trochę głupio. Dla mnie trochę dynamiki to , a nie, aby wyraźnie określić typy i tak dalej; powinno to być (najlepiej) obsługiwane przez środowisko wykonawcze. Oczywiście JSON.NET może być trochę trudniej wiedzieć, co powinno maskować, jak w danej sytuacji ...
James (lub ktokolwiek inny, kto zna układy wewnętrzne JSON.NET), czy jest to zgodne z projektem? Jeśli dodam instrukcję obsadzoną takimi datami:
File.SetLastWriteTime("c:/temp/somefile.txt", (DateTime) result.LastModifiedTime);
... wszystko działa bez zarzutu.
Dzięki. Szczerze mówiąc, strona, na którą się powoływam, nie wyjaśnia żadnej "przyczyny", dlaczego tak jest (nie daje ona zbyt wielu informacji). Google podało mi trochę więcej szczegółów, ale strona, którą podłączyłem, niestety nie mówi wszystkiego. Oto także inne pytanie z kilkoma szczegółami: http://stackoverflow.com/questions/8067621/why-do-i-get-a-runtimebinderexception-using-json-net-with-dynamic-when-calling-a –