1

我正在阅读“.Net 中的依赖注入”,并希望实现所提出的一些想法。坦率地说,我想尝试一个“Poor Mans DI”/无 DI 容器——手动管理依赖项——以便在进入 DI 容器之前更好地理解这些概念。

第 2 章中有一个示例演示了组合根和创建依赖项(和构造函数注入)。基本思想与此类似:

Web Project (has CompositionRoot.cs) --> Domain Project <-- DataAccess Project

组合根创建一个 DataAccess 实例并将其传递给域项目类的构造函数——所有依赖项都从 web.config 中读取。

我完全同意上述想法,并同意 Web 项目不应引用 DataAccess 项目。我在这一点上的理解是,Web 项目确实需要对 DataAccess 项目的引用才能通过反射创建实例。

我的问题:

  1. 我的理解是,我需要将 DataAccess.dll 复制到 Web 项目的 Bin 文件夹中才能构建所有内容。这似乎非常费力,所以我有兴趣设置 Visual Studio 为我做这件事吗?到目前为止,这就是我所发现的。

  2. DI Container 如何解决我所描述的问题?** 我还没有查看任何容器,所以我不知道它们是否需要对依赖项项目的硬引用。

4

1 回答 1

0

我的理解是,我需要将 DataAccess.dll 复制到 Web 项目的 Bin 文件夹中才能构建所有内容。

既然你有一个单独的DataAccess.dll,那么是的。

我有兴趣设置 Visual Studio 为我执行此操作

您可以使用预构建事件来执行此操作(在项目属性页面的构建选项卡中)。

考虑到如果您仍然在做 DI 但在同一个项目中,您可能不需要这样做。当您在物理上需要单独部署类时,项目应该是部署单元。使用名称空间/目录进行逻辑分离,您将不会遇到此问题。

DI Container 如何解决我所描述的问题?

你告诉它。要么在配置时明确,要么使用约定。

于 2013-01-27T19:36:45.967 回答