Правильное использование IHttpMessageHandlerFactory?

У меня есть вариант использования HttpMessageHandler, который требует новых параметров при создании экземпляра. Я считаю, что IHttpMessageHandlerFactory.CreateHandler является правильным API здесь, но я не уверен, правильно ли это использование:

public class MyDelegatingHandler : DelegatingHandler {
    public MyDelegatingHandler(
        HttpMessageHandler internalHandler
        )
    {
        _internalHandler = internalHandler;
    }

    protected override async Task<HttpResponseMessage> SendAsync(
        HttpRequestMessage request,
        CancellationToken cancellationToken
        )
    {
        // custom logic
        return await _internalHandler.SendAsync(request, cancellationToken).ConfigureAwait(false);
    }

    private HttpMessageHandler _internalHandler;
}

public class MyHttpClientFactory {
    public MyHttpClientFactory(
        IHttpMessageHandlerFactory factory
        )
    {
        _factory = factory;
    }

    public HttpClient CreateClient(
        // arguments
        )
    {
        return new HttpClient(
            new MyDelegatingHandler(_factory.CreateHandler()),
            disposeHandler: false
            );
    }

    private IHttpMessageHandlerFactory _factory;
}

Предполагая, что MyDelegatingHandler не имеет состояния, которое нужно удалять само по себе, будет ли это правильно использовать функции управления временем жизни HttpClientFactory, внедренные через зависимость IHttpMessageHandlerFactory?


person Johnathon Root    schedule 23.12.2019    source источник
comment
Я не уверен, я вижу, что вы не используете фабрику, которую вводите в первую очередь. Возможно, это поможет вам: stackoverflow.com/questions/50747749/   -  person Peter Sandor    schedule 23.12.2019
comment
спасибо; внес изменения, чтобы прояснить использование фабрики обработчиков и внутреннего обработчика в моем реальном коде. написание скелета с нуля нетривиально   -  person Johnathon Root    schedule 23.12.2019