我正在尝试创建一个扩展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)