我有一个方法可以简化使用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将始终有无参数的构造函数 –