繁体   English   中英

通用方法无法将“System.Object”类型的对象转换为 X 类型

[英]Generic Method Unable to cast object of type 'System.Object' to type X

我是创建通用方法的新手,并且遇到了铸造问题。

以下是用于与 API 通信的类库。 我试图投射的对象存在于我的主应用程序中,这可能是问题所在,但我不知道。 我可能做错了什么?

public T GetRequest<T>(Authentication auth, string api)
{
     var restClient = new RestClient(Constants.Api.Client);

     var restRequest = new RestRequest(api, Method.GET);
     SetParameters(restRequest, auth);

     var restResponse = restClient.Execute(restRequest);

     return JsonConvert.DeserializeAnonymousType<T>(restResponse.Content, (T)new object());
}

我试图转换的对象存在于我的主应用程序中

并不完全清楚你的意思,但你试图投射的对象只是System.Object一个实例:

(T)new object()

除非T本身是object否则这永远不会起作用。

这里的问题似乎是您正在尝试使用一种专为处理匿名类型而设计的方法(因此第二个参数作为“示例”出现以使类型推断工作) - 但类型不是匿名的( T )。

我怀疑你只是想要:

return JsonConvert.DeserializeObject<T>(restResponse.Content);

在你的方法最后一行(T)new object()是一个问题。 这没有任何意义。 您正在创建System.Object新实例并尝试将其System.Object转换为T ,其中T可以是任何内容。 只有在使用泛型参数T作为System.Object调用时,您的方法才会成功。 例如GetRequest<object>(...)会通过,否则会失败。

不知道你想在这里实现什么。 如果您能提供更多信息,将很容易提供帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM