首页 问答 C# 中如何让泛型参数支持 TryParse 字符串
问题详情

场景是下面的 HttpClient 扩展方法实现,想从 response headers 中读取字符串值,通过 TryParse 转换为泛型类型对应的值

public static class HttpClientExtensions
{
    extension(HttpClient httpClient)
    {
        public async Task<TResult?> ReadFromHeadAsync<TResult>(string requestUri, string readHeaderName)
        {
            var response = await httpClient.HeadAsync(requestUri);
            if (response.Headers.TryGetValues(readHeaderName, out var values))
            {
                if (TResult.TryParse(values.LastOrDefault(), null, out TResult? returnValue))
                {
                    return returnValue;
                }
            }
            return default;
        }
    }
}

回答

给泛型加个 IParsable<TResult> 接口约束即可

public static partial class HttpClientExtensions
{
    extension(HttpClient httpClient)
    {
        public async Task<TResult?> ReadFromHeadAsync<TResult>(string requestUri, string readHeaderName, ILogger? logger)
            where TResult : IParsable<TResult>
        {
            //...
        }
    }
}

版权:言论仅代表个人观点,不代表官方立场。转载请注明出处:https://www.stntk.com/question/2335.html

发表评论
暂无评论

还没有评论呢,快来抢沙发~

点击联系客服

在线时间:8:00-16:00

客服QQ

70068002

客服电话

400-888-8888

客服邮箱

70068002@qq.com

扫描二维码

关注微信公众号

扫描二维码

手机访问本站