.NET Core AddHttpClient Динамическая конфигурация - PullRequest
1 голос
/ 02 июля 2019

Я использую расширение AddHttpClient для настройки HttpClient, которое используется в моем личном RestClient.

    public class RestClient : IRestClient
    {
        public RestClient(IRestClientSettings settings, HttpClient httpClient)
        {
            ...
        }
    }

    public class RestClientFactory
    {
        public IRestClient Create(IRestClientSettings settings)
        {
            // how to create IRestClient with above configuration??
        }
    }

    public static IServiceCollection AddServices(this IServiceCollection services)
    {
        services.AddHttpClient<IRestClient, RestClient>((provider, client) =>
        {
            // problem, this is always same binded instance, 
            // not the one provided in RestClientFactory
            var settings = provider.GetService<IRestClientSettings>(); 
            settings.ConfigureHttp(provider, client);
        });
    }

Все нормально, если я ввожу IRestClient в свои службы, но проблема заключается в том, когдаЯ хочу динамически создать IRestClient с использованием RestClientFactory для использования пользовательской конфигурации (не той, которая предусмотрена привязкой DI по умолчанию для IRestClientSettings).Как этого добиться?

IRestClientSettings - это просто пользовательские настройки вместе с методом ConfigureHttp, где пользователь может определять пользовательские настройки HttpClient.

...