用于完整框架 (4.7) 和 IoC 的 IHttpClientFactory

IHttpClientFactory for full framework (4.7) and IoC

我正在尝试在 Full Framework 4.7(非核心)中注册 IHttpClientFactory。 我正在使用 IoC 容器 (LightInject)

问题,我无法直接访问内部 class DefaultHttpClientFactory 的实现 https://github.com/dotnet/runtime/blob/master/src/libraries/Microsoft.Extensions.Http/src/DefaultHttpClientFactory.cs 这个 class 不可见,因为它不是 public。 我找到了作为第 3 方实施的解决方案 - https://github.com/uhaciogullari/HttpClientFactoryLite , 位它使用自己的接口。

是否可以将接口 IHttpClientFactory 与 IoC 一起用于完整框架(不是 .net 核心)?

如果可能,我可以在注册 IoC 期间使用什么 class 作为 IHttpClientFactory 的实现?

正如 this github issue 中所建议的,您可以使用这个:

var serviceProvider = new ServiceCollection().AddHttpClient().BuildServiceProvider();
container.RegisterInstance(serviceProvider.GetService<IHttpClientFactory>());
container.ContainerScope.RegisterForDisposal(serviceProvider);
  • AddHttpClient registers DefaultHttpClientFactoryIHttpClientFactory
  • 然后就可以从DI容器中取回了

此示例使用 SimpleInjector,但相同的概念可以应用于任何其他 DI 框架。