将泛型类型传递给采用泛型类型的方法

本文关键字:泛型类型 方法 | 更新日期: 2023-09-27 18:18:08

我试图写一个方法,它需要一个泛型类型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'必须是具有公共无参数的非抽象类型构造函数,以便将其用作泛型类型or中的参数'T'方法

Execute方法定义如下

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

将泛型类型传递给采用泛型类型的方法

Execute<T>()中有一个where T : new()约束。GetResult<T>()应具有相同的约束