2016-11-15 36 views
1

我試圖寫這需要一個通用的類型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 
} 

如何過以下行dosnt編譯

var response = client.Execute<T>(request); 

錯誤1「T」必須是一個非抽象類有一個公共的無參數 構造,以便在通用型使用它作爲參數「T」或 方法

Execute方法的定義如下

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

回答

1

你有一個Execute<T>()約束where T : new()GetResult<T>()應該具有相同的約束。