我们有蒙山代表我们的应用程序层中的多个项目的解决方案。 例如
域
数据
逻辑
WebUI中
我们的温莎城堡容器从我们的网络层引用然后我们通过我们的层高达级联这些依赖关系。 例如...
// In Domain
public interface IFooRepository
{
void DoSomething();
}
// In Data
public class FooRepository : IFooRepository
{
public void DoSomething()
{
// Something is done
}
}
// In Logic
public class MyThingManager
{
private readonly IFooRepository fooRepository;
public MyThingManager(IFooRepository fooRepository)
{
this.fooRepository = fooRepository;
}
public void AMethod()
{
this.fooRepository.DoSomething();
}
}
// In Web
// in some controller....
var newManager = new MyThingManager(WindsorContainer.Resolve<IFooRepository>());
newManager.DoSomething();
这很好地工作,直到我们的管理者有很多有自己的依赖关系的成员。 发生这种情况时,我们结束了resolveing无论是管理者依赖关系和他们的依赖关系depandancies和从网络层级联起来。 这导致一些相当大的构造。
有,例如有一个经理的内部部件更优雅的方式解决它自己的依赖关系,而无需进入容器?
请记住,只有Web层到容器(防止圆形项目扶养)的访问,所以只能在网络层可以activly WindsorContainer.Resolve()逻辑层不能所以唯一的办法级联一个无扶养的集装箱援助来解决它在网络层,然后使用它的界面通过它的链条。