IHttpClientFactory для полной инфраструктуры (4.7) и IoC

Я пытаюсь зарегистрировать IHttpClientFactory в Full Framework 4.7 (не ядро). Я использую контейнер IoC (LightInject)

Проблема в том, что у меня нет прямого доступа к реализации внутреннего класса DefaultHttpClientFactory https://github.com/dotnet/runtime/blob/master/src/libraries/Microsoft.Extensions.Http/src/DefaultHttpClientFactory.cs Этот класс не отображается, поскольку это не публично. Я нашел решение в виде сторонней реализации - https://github.com/uhaciogullari/HttpClientFactoryLite, укусил его использует собственный интерфейс.

Можно ли использовать интерфейс IHttpClientFactory с IoC для Full Framework (не ядро ​​.net)?

Если это возможно, какой класс я могу использовать в качестве реализации для IHttpClientFactory во время регистрации для IoC?


person Sergey Surnin    schedule 02.12.2020    source источник


Ответы (1)


Как было предложено в этой проблеме github, вы можете использовать это:

var serviceProvider = new ServiceCollection().AddHttpClient().BuildServiceProvider();
container.RegisterInstance(serviceProvider.GetService<IHttpClientFactory>());
container.ContainerScope.RegisterForDisposal(serviceProvider);
  • AddHttpClient регистры DefaultHttpClientFactory для IHttpClientFactory
  • Затем вы можете получить его из контейнера DI

В этом примере используется SimpleInjector, но ту же концепцию можно применить к любой другой платформе внедрения зависимостей.

person Peter Csala    schedule 03.12.2020