Я новичок в дженериках и пытаюсь создать обобщенный c метод HTTP GET для моего проекта (и, возможно, расширить его для обработки также POST / PUT). Кажется, что следующее работает нормально, когда ответ основан на строке:
private async Task<T> HttpGetAsync<T>(Uri uri)
{
var httpRequestMessage = new HttpRequestMessage()
{
Method = HttpMethod.Get,
RequestUri = uri,
Headers =
{
{ "Authorization", $"Basic {encodedCredentials}"},
{ "Cache-Control", "no-cache" }
}
};
var response = await _httpClient.SendAsync(httpRequestMessage);
var content = await response.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<T>(content);
}
Но в некоторых случаях, в зависимости от типа, я хотел бы, чтобы ответ читался с использованием ReadAsByteArrayAsyn c () или ReadAsStreamAsyn c () вместо ReadAsStringAsyn c ().
Я думаю, что я мог бы, вероятно, сделать getType () внутри метода и прочитать ответ, используя соответствующий метод, но мне интересно, может быть, есть лучший способ сделать это?
Это плохая идея / плохое использование дженериков в целом? Спасибо за любую информацию!