3

我一直在阅读 Onion 架构,我有一个简单的问题,即应如何安排程序集依赖项以使 DI 容器能够连接所有内容。

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

UI => BL <= DAL

所以 UI 和 DAL 引用了 BL,但互不了解。

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

容器将(可能)在 UI 的入口点中配置。既然 UI 不知道 DAL,那它怎么注册 IDatabaseService 来解析为 DALDatabaseService 呢?

4

1 回答 1

2

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

于 2011-10-16T21:22:47.673 回答