我一直在阅读Onion架构,我认为这是一个简单的问题,关于如何为DI容器安排程序集依赖性以便能够连接所有内容。
假设一个非常简单的解决方案具有以下结构:
UI => BL< = DAL
因此UI和DAL引用BL,但彼此不了解。
还假设BL有一个名为IDatabaseService的接口,该接口由DALDatabaseService在DAL中实现。
容器(可能)将在UI的入口点配置。由于UI不了解DAL,如何将IDatabaseService注册到DALDatabaseService?
答案 0 :(得分:2)
大多数情况下,这是通过让容器知道DAL(通过配置)并将DAL的程序集与UI或其他众所周知的位置(GAC等)放在同一目录中来完成的。在Spring.NET中,您将在Spring配置文件中添加DAL的类型。在Castle Windsor中,您可以在每个DLL中包含一个实现IWindsorInstaller的类,该类具有要在IoC容器中注册的类型,并在UI中告诉容器去查找某个目录中的所有组件。