将一个通用类型传递给一个接受通用类型的方法

3
我试图编写一个方法,它接受一个泛型类型T并将其传递给一个接受泛型类型的方法(client.Execute)。
private T GetResult<T>(IRestRequest request)
{
    var client = new RestClient(string.Format("{0}:{1}", ApiBase, ApiPort))
    var response = client.Execute<T>(request);
    // omitted for brevity 
}

然而,以下代码行无法编译。
var response = client.Execute<T>(request);

错误1:必须将“T”设置为非抽象类型,并具有公共的无参构造函数,才能将其用作泛型类型或方法中的参数“T”

Execute 方法定义如下:

public virtual RestSharp.IRestResponse<T> Execute<T>(RestSharp.IRestRequest request) where T : new()
1个回答

3

您在Execute<T>()中使用了where T : new()的约束。应该在GetResult<T>()中也使用相同的约束。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接