小编Fre*_*son的帖子

扩展HttpClient

我正在尝试创建一个扩展httpclient但仍然是抽象的类.

public abstract class Repository : HttpClient
{
    public override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
    {
        //retry logic here
        var response = await base.SendAsync(request, cancellationToken);
        while (!IsValid(response))
        {
            Attempts++;
            response = await Retry(request, cancellationToken);
        }
        Attempts = 0;
        return response;
    }
    public int Attempts { get; set; }
    public abstract bool IsValid(HttpResponseMessage response);
    public abstract Task<HttpResponseMessage> Retry(HttpRequestMessage request, CancellationToken cancellationToken);
    public abstract Type GetPageForUri(Uri uri);
    public abstract Task<object> GetItems(Uri uri);
}
Run Code Online (Sandbox Code Playgroud)

但是当子类调用getStringAsync时,它不会在Repository中调用SendAsync

public class EmailClient : Repository
{
    public …
Run Code Online (Sandbox Code Playgroud)

c# abstract-class asynchronous httpclient

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

标签 统计

abstract-class ×1

asynchronous ×1

c# ×1

httpclient ×1