. net core AddHttpClient с отражением - PullRequest
0 голосов
/ 16 апреля 2020

Я использую. net core 3.1, и я хочу зарегистрировать свои службы с отражением.

Мой класс CustomProvider:

public class CustomProvider : BaseProvider, ICustomProvider
{
public CustomProvider(IHttpClientFactory httpClientFactory)
            : base(httpClientFactory)
        {
            _httpClient = httpClientFactory.CreateClient();
        }
}

Он запущен при запуске и успешно зарегистрирован .

foreach (var type in assembly.ExportedTypes)
{
var interfaceType = type.GetInterfaces().FirstOrDefault(i => i.GetInterfaces().Any(x => .Name.Contains("IProvider")));

if (interfaceType == null)
continue;

services.AddTransient(interfaceType, type);
}

После этого я регистрирую спецификации c зарегистрированного интерфейса с помощью HttpClient и Custom Handler.

services.Configure<ProxyOptions>(options => Configuration.GetSection("ProxyList").Bind(options));
services.AddTransient<ProxyHttpHandler>();
services.AddHttpClient<ICustomProvider>().ConfigurePrimaryHttpMessageHandler<ProxyHttpHandler>();

После отправки запроса выдает ошибку:

Не удалось найти подходящий конструктор для типа 'ICustomProvider'. Убедитесь, что тип является конкретным, и службы зарегистрированы для всех параметров конструктора publi c.

Я не знаю, почему возникло это исключение. Мой подрядчик в CusotmerProvider является publi c.

Я нашел другой вопрос о моей ссылке, исключение - это точно моя проблема. Не удалось найти подходящий конструктор для типа «ApplicationInventory.Services.ServerInventoryService»

...