1

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

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

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

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

4

1 回答 1

0

正如this github issue中建议的那样,您可以使用它:

var serviceProvider = new ServiceCollection().AddHttpClient().BuildServiceProvider();
container.RegisterInstance(serviceProvider.GetService<IHttpClientFactory>());
container.ContainerScope.RegisterForDisposal(serviceProvider);
  • AddHttpClient 注册DefaultHttpClientFactory为_IHttpClientFactory
  • 然后你可以从 DI 容器中检索它

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

于 2020-12-03T09:11:21.590 回答