Я использую. 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»