IoC和依赖项的静态绑定

时间:2014-04-13 13:50:09

标签: c# .net inversion-of-control ioc-container

我们有一个以“洋葱建筑”风格建造的应用程序。我们有一个exe-module,它包含一个bootstrapper和所有Views(windows)。引导程序应根据当前应用程序正确配置IoC容器。我们知道哪些实现者必须是接口的解析器。所以我们想要做出类似的事情:

container.AddDependency(IDevice, typeof(SpecificDevice));

但是当我们进行静态绑定时,我们的exe模块应该引用包含业务逻辑的一大堆dll。这导致了Views知道一切并且可以访问他们想要的所有内容的情况。这感觉完全错了。

那么我们做错了什么?)

P.S。实际上,我们使用Unity作为IoC容器。

1 个答案:

答案 0 :(得分:2)

你的错误在于,组合根,即编排所有依赖项的可执行文件,也实现了一堆抽象。

相反,将您的视图放在一个单独的程序集中,该程序集仅引用包含抽象的其他程序集。然后,将实现绑定到组合根(可执行文件)中的抽象。

CR是唯一应该了解所有抽象和所有实现的地方。