C# 在.NET核心依赖项注入中访问特定于Unity的功能
我有一个.net core 2.1控制台应用程序。我正在构建容器,如下所示:C# 在.NET核心依赖项注入中访问特定于Unity的功能,c#,dependency-injection,.net-core,unity-container,C#,Dependency Injection,.net Core,Unity Container,我有一个.net core 2.1控制台应用程序。我正在构建容器,如下所示: public IServiceProvider ConfigureServices() { var services = new ServiceCollection(); // Register services here. // Unity container interface: var containerFactory = new ServiceProviderFactory(
public IServiceProvider ConfigureServices()
{
var services = new ServiceCollection();
// Register services here.
// Unity container interface:
var containerFactory = new ServiceProviderFactory(null);
IUnityContainer container = containerFactory.CreateBuilder(services);
IServiceProvider serviceProvider = containerFactory.CreateServiceProvider(container);
return serviceProvider;
}
我需要为容器中注册的一些服务提供构造函数参数。然而,我不想使用类似的东西。相反,我希望通过以下方式访问Unity功能:
var container = (UnityContainer)serviceProvider;
var foo = container.Resolve<IFoo>(new ParameterOverrides<Foo> { "name": "myFoo" });
有没有办法做到这一点,或者即使我使用的是Unity实现,我也只能使用IServiceProvider
接口
编辑:
因此,我找不到一种方法来使用类似cast的东西从IServiceProvider
切换到IUnityContainer
。因此,我稍微修改了上面的代码以返回Unity容器:
public IServiceProvider ConfigureServices()
{
var services = new ServiceCollection();
// Register services here.
// Unity container interface:
var containerFactory = new ServiceProviderFactory(null);
IUnityContainer container = containerFactory.CreateBuilder(services);
return container;
}
现在,我可以在.Net Core应用程序中使用常用的Unity DI。您应该使用NugetPackage,它将Unity与.Net Core提供的ServiceProvider集成在一起。
public IServiceProvider ConfigureServices()
{
var services = new ServiceCollection();
// Register services here.
// Unity container interface:
var containerFactory = new ServiceProviderFactory(null);
IUnityContainer container = containerFactory.CreateBuilder(services);
return container;
}