我有一個方法可以簡化使用HttpClient調用。它使用方法HttpReponse.Content.ReadAsAsync()。結果從API獲取響應。正在投射簡單通用對象
這一切工作正常。我的方法看起來是這樣的:
public static T ExecuteAPIGetRequest<T>(string url, Dictionary<string, string> parameters)
{
HttpClient client = new HttpClient();
//basic authentication
var t = new object();
string baseURL = "myurl";
//Execute request
HttpResponseMessage response = client.GetAsync(baseURL).Result;
if (response.IsSuccessStatusCode)
{
return response.Content.ReadAsAsync<T>().Result;
}
else
{
return (T)t;
}
}
我的問題是,如果查詢失敗,它需要返回一個空類型T的這是好的,如果它是一個自定義類,我已經寫了,但它並不適用於工作對象如字符串或字符串[]。有任何想法嗎?
乾杯
大斑病
請注意:如果'T'是一個引用類型,它最可能是'null'。如果你想返回一個默認的*實例*,你需要爲'T'添加一個'new'約束並''返回新的T();'。 –
謝謝伊利亞伊凡諾夫,那工作得很好!剛剛好。 – ncbl
@DanielHilgarth可能我錯過了一些東西,但是'default(T)'爲原語和自定義結構返回正確的值。我剛測試過'double'和自定義結構。你不需要指定通用的約束,struct將始終有無參數的構造函數 –