使用Unity解析容器本身

时间:2013-11-28 12:48:18

标签: unity-container

根据this使用Unity时,容器本身可以解析为依赖项。我试图找到一个如何实现这个但却找不到的例子。

1 个答案:

答案 0 :(得分:0)

这个的主要用例是在Composition Root内实现工厂。这个工厂可以回调到容器中来解析它需要的类型:

private class UnitySomeServiceFactory : ISomeServiceFactory
{
    private readonly IUnityContainer container;

    public UnitySomeServiceFactory(IUnityContainer container)
    {    
        this.container = container;
    }

    public ISomeService Create(SomeServiceType type)
    {
        switch (type)
        {
            case SomeServiceType.Blue: return this.container.Resolve<BlueService>();
            case SomeServiceType.Pink: return this.container.Resolve<PinkService>();
            case SomeServiceType.Red: return this.container.Resolve<RedService>();
            default: throw new InvalidEnumArgumentException();
        }
    }
}

请注意,不要在任何地方依赖容器,但不建议使用Composition Root。