DI容器中的洋葱结构和登记依赖性

时间:2011-10-16 21:11:19

标签: c# dependency-injection inversion-of-control onion-architecture

我一直在阅读Onion架构,我认为这是一个简单的问题,关于如何为DI容器安排程序集依赖性以便能够连接所有内容。

假设一个非常简单的解决方案具有以下结构:

UI => BL< = DAL

因此UI和DAL引用BL,但彼此不了解。

还假设BL有一个名为IDatabaseService的接口,该接口由DALDatabaseService在DAL中实现。

容器(可能)将在UI的入口点配置。由于UI不了解DAL,如何将IDatabaseService注册到DALDatabaseService?

1 个答案:

答案 0 :(得分:2)

大多数情况下,这是通过让容器知道DAL(通过配置)并将DAL的程序集与UI或其他众所周知的位置(GAC等)放在同一目录中来完成的。在Spring.NET中,您将在Spring配置文件中添加DAL的类型。在Castle Windsor中,您可以在每个DLL中包含一个实现IWindsorInstaller的类,该类具有要在IoC容器中注册的类型,并在UI中告诉容器去查找某个目录中的所有组件。