根据this使用Unity时,容器本身可以解析为依赖项。我试图找到一个如何实现这个但却找不到的例子。
答案 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。