【发布时间】:2018-06-05 17:28:53
【问题描述】:
越来越多的 .NET Core 库绑定到 IServiceCollection。例如,我想在我的 NET Framework 4.7.1 中使用HttpClientFactory 描述的here。桌面应用程序。我的应用程序正在使用 Unity IoC。我将Microsoft.Extensions.Http 引用为 NuGet。
但是有一个问题:新的 ASP.Net Core 组件绑定到 .NetCore 的 Microsoft DI 框架 - IServiceCollection。比如HttpClientFactory的注册地址在这里:
public void ConfigureServices(IServiceCollection services)
{
services.AddHttpClient();
}
我正在深入研究MS code,并想手动将相应的接口和类注册到 Unity。这就是 IServiceCollection 注册服务的方式:
services.TryAddTransient<HttpMessageHandlerBuilder, DefaultHttpMessageHandlerBuilder>();
services.TryAddSingleton<IHttpClientFactory, DefaultHttpClientFactory>();
将其移至 Unity IoC 没有问题,但是当我想注册具有 internal 可见性的 DefaultHttpMessageHandlerBuilder 和 DefaultHttpClientFactory 时,我被卡住了。所以它们不能在 MS 代码之外注册。
我有机会如何解决这种情况吗?
【问题讨论】:
-
好吧,正如您所说,您要使用的两个具体类型是
internal,就是这样,您不能直接使用它们。只是想补充一个想法:您能否设置您的 Unity IOC,使其通过从 ASP.NETIServiceCollection依次解析IHttpClientFactory来解析IHttpClientFactory? -
我通过为 IServiceCollection 使用统一适配器解决了这个问题:stackoverflow.com/a/51036884/245460
标签: c# asp.net-core dependency-injection unity-container