我有一个像下面这样的接口,我将它注入到统一容器中。
public interface IMyInstanceFactory
{
IEnumerable<IMyInstance> GetAll();
}
所有IMyInstance
这些在运行前都是已知的,即它们可以在引导程序中设置并且可以从统一中检索。我的具体实现IMyInstanceFactory
如下:
public class MyInstanceFactory:IMyInstanceFactory
{
IUnityContainer _container;
public MyInstanceFactory(IUnityContainer container)
{
_container = container;
}
public IEnumerable<IMyInstance> GetAll()
{
return _container.ResolveAll<IMyInstance>();
}
}
..在我的引导程序中,我做了这样的事情:
container.RegisterType<IMyInstance,MyInstance1>;
container.RegisterType<IMyInstance,MyInstance2>;
container.RegisterType<IMyInstance,MyInstance3>;
container.RegisterType<IMyInstanceFactory,MyInstanceFactory>;
这很好地解决了一切。但是,我不想依赖容器本身或IMyInstanceFactory
为此实现,有没有一种方法可以在不实现的情况下进行设置IMyInstanceFactory
?Unity 是否为此提供了便利?
这种东西。。
container.RegisterType<IMyInstanceFactory,factory=>factory.GetAll()>().IsResolvedBy(unity.ResolveAll<IMyInstance>);
我知道城堡可以做到这一点,Unity可以做类似的事情吗?