小编bda*_*dan的帖子

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);
}
Run Code Online (Sandbox Code Playgroud)

但在某些情况下,根据类型,我希望使用 ReadAsByteArrayAsync() 或 ReadAsStreamAsync() 而不是 ReadAsStringAsync() 读取响应。

我认为我可以在方法中执行 getType() 并使用适当的方法读取响应,但我想知道是否有更好的方法来做到这一点?

一般来说,这是一个坏主意/泛型的错误用法吗?感谢您提供任何信息!

c# generics dotnet-httpclient

3
推荐指数
1
解决办法
70
查看次数

标签 统计

c# ×1

dotnet-httpclient ×1

generics ×1