gpt4 book ai didi

c# - System.InvalidCastException : 'Unable to cast object of type ' System. String' 键入 'Newtonsoft.Json.Linq.JToken' 。'

转载 作者:行者123 更新时间:2023-12-02 03:00:57 29 4
gpt4 key购买 nike

如果我运行代码:

    object myObject = "abc";
JToken jToken = (JToken)myObject;

它编译得很好,但它抛出了标题中的神秘异常。它是神秘的,因为可以通过以下正确编译和运行将表单 String 转换为 JToken:

    String mystring = "abc";
JToken jToken2 = (JToken)mystring;

所以我很好奇为什么会发生这种情况?

当然,上面的例子有点愚蠢,但也许是为了了解我为什么问这个,因为在以下情况下也会生成相同的错误。

class Program
public static JToken apply_function(Delegate function, object[] arglist)
{
return (JToken)function.DynamicInvoke(arglist);
}

static void Main(string[] args)
{
Func<string> hello = () => { return "hello world!"; };
Console.WriteLine(apply_function(hello, new object[0]));
}
}

在想要使用apply_function的实际情况中,我无法控制返回类型或提供给apply_function<的委托(delegate)的参数类型。我唯一的保证是 Delegate 将是一个返回可转换为 JToken 的内容的函数。

最佳答案

这并不是真正的类型转换,而是 conversion 。您可以看到in the docs Json.NET 定义了从 stringJToken 的转换。

示例中的静态类型是 object - 没有定义从 objectJToken 的转换。

从文档中我看来您应该尝试使用 JToken.FromObject .

关于c# - System.InvalidCastException : 'Unable to cast object of type ' System. String' 键入 'Newtonsoft.Json.Linq.JToken' 。',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59989011/

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