gpt4 book ai didi

c# - 为什么我必须在使用之前将 JValue 显式转换为目标类型?

转载 作者:太空狗 更新时间:2023-10-29 21:50:45 31 4
gpt4 key购买 nike

我有这样的代码:

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);

但是,这给了我(在运行时,因为我们在这里谈论动态):

RuntimeBinderException
The best overloaded method match for 'System.IO.File.SetLastWriteTime(string, System.DateTime)' has some invalid arguments

这感觉有点傻。对我来说,动态的一点是不必必须显式指定类型等等;这应该(理想情况下)由运行时处理。当然,对于 JSON.NET 来说,要知道它在给定情况下应该伪装成什么可能有点困难......

James(或任何其他熟悉 JSON.NET 内部结构的人),这是设计使然吗?如果我像这样添加手动 DateTime 转换:

File.SetLastWriteTime("c:/temp/somefile.txt", (DateTime) result.LastModifiedTime);

...一切正常。

最佳答案

找到答案 here就在发布之前...

事实证明,我要么强制转换,要么使用 JValue 的 Value 属性。尽管如此,有关此的更多详细信息还是不错的。当然,只要能够神奇地使用我的 JValue 作为第 3 方方法的参数而不必担心转换将是最佳的,从而提供最“动态语言”般的 JSON 功能体验(否则真的很棒!)。 NET.

关于c# - 为什么我必须在使用之前将 JValue 显式转换为目标类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16144964/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com