#inversion-of-control #.net-4.7.2 #httpclientfactory #ihttpclientfactory
#инверсия управления #.net-4.7.2 #httpclientfactory #ihttpclientfactory
Вопрос:
Я пытаюсь зарегистрировать IHttpClientFactory в полной среде 4.7 (не основной). Я использую контейнер IoC (LightInject)
Проблема в том, что у меня нет прямого доступа к реализации внутреннего класса DefaultHttpClientFactory https://github.com/dotnet/runtime/blob/master/src/libraries/Microsoft .Расширения.Http/src/DefaultHttpClientFactory.cs Этот класс не виден, поскольку он не является общедоступным. Я нашел решение в качестве сторонней реализации — https://github.com/uhaciogullari/HttpClientFactoryLite , бит он использует свой собственный интерфейс.
Можно ли использовать интерфейс IHttpClientFactory с IoC для полной платформы (не .net core)?
В случае, если это возможно, какой класс я могу использовать в качестве реализации для IHttpClientFactory во время регистрации для IoC?
Ответ №1:
Как было предложено в этом выпуске github, вы можете использовать это:
var serviceProvider = new ServiceCollection().AddHttpClient().BuildServiceProvider();
container.RegisterInstance(serviceProvider.GetService<IHttpClientFactory>());
container.ContainerScope.RegisterForDisposal(serviceProvider);
AddHttpClient
регистрируетDefaultHttpClientFactory
дляIHttpClientFactory
- Затем вы можете извлечь его из контейнера DI
В этом примере используется SimpleInjector
, но та же концепция может быть применена для любого другого фреймворка DI.