我正在阅读“.Net中的依赖注入”,并希望实现一些提出的想法。为了绝对提前,我想尝试一个'穷人DI'/无DI容器 - 手动管理依赖关系 - 以便在进入DI容器之前更好地理解这些概念。
第2章中说明了一个示例,它演示了一个Composition Root并创建了依赖项(以及构造函数注入)。基本想法与此类似:
Web Project (has CompositionRoot.cs) --> Domain Project <-- DataAccess Project
Composition根创建一个DataAccess实例并将其传递给Domain项目的类的构造函数 - 所有依赖项都从web.config中读取。
我完全赞同上述想法并同意Web Project不应该引用DataAccess项目。我在这一点上的理解是,Web Project 确实需要对DataAccess项目进行引用,以便通过Reflection创建实例。
我的问题:
我的理解是,我需要将DataAccess.dll复制到Web项目的Bin文件夹中,以便构建所有内容。这似乎是非常耗费人力的,所以我有兴趣设置Visual Studio为我做这个? This是迄今为止我发现的全部内容。
DI容器如何解析我所描述的内容? **我还没有查看任何容器,所以我不知道他们是否需要对依赖项目的硬引用。
答案 0 :(得分:0)
我的理解是,我需要将DataAccess.dll复制到Web项目的Bin文件夹中,以便构建所有内容。
由于你有一个单独的DataAccess.dll
,那么是的。
我有兴趣设置Visual Studio来为我做这个
您可以使用预构建事件来执行此操作(在项目属性页的“构建”选项卡中)。
考虑到你可能不需要,但是在同一个项目中。当您需要单独部署类时,项目应该是部署单元。使用命名空间/目录进行逻辑分离,您将不会遇到此问题。
DI容器如何解决我所描述的内容?
你告诉它。在配置时或使用约定时显式。