Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在.NET核心依赖项注入中访问特定于Unity的功能_C#_Dependency Injection_.net Core_Unity Container - Fatal编程技术网

C# 在.NET核心依赖项注入中访问特定于Unity的功能

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(

我有一个.net core 2.1控制台应用程序。我正在构建容器,如下所示:

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;
}