用于完整框架 (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 DefaultHttpClientFactory
为 IHttpClientFactory
- 然后就可以从DI容器中取回了
此示例使用 SimpleInjector
,但相同的概念可以应用于任何其他 DI 框架。
我正在尝试在 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
registersDefaultHttpClientFactory
为IHttpClientFactory
- 然后就可以从DI容器中取回了
此示例使用 SimpleInjector
,但相同的概念可以应用于任何其他 DI 框架。