【发布时间】:2015-05-10 10:27:19
【问题描述】:
我正试图围绕依赖注入的概念展开思考。我有一个视觉工作室解决方案。我已将其拆分为 3 个项目:DataAccessLayer、ServiceLayer、BusinessLogicLayer。
ServiceLayer 充当 BusinessLogic 和 DataAccess 之间的链接,将 SQL 和 LINQ 语句等内容隐藏在 BusinessLogic 中。
现在,网上很多教程都推荐使用 DependencyInjection 在我的 BusinessLayer 中使用 ServiceLayer 中的类。我相信,原因是 BusinessLayer 与 ServiceLayer 松散耦合。但是,当这两个层(及其对应的类)在不同的项目中时,我并不完全理解如何实现这一点。
根据在线教程,我将让 ServiceLayer 中的类实现一个接口,该接口将在我的 BusinessLayer 中引用。但是这个接口应该定义在哪个项目呢?这个接口在ServiceLayer中定义是有道理的。但是从 BusinessLayer 引用这个接口会不会导致这些项目之间的逻辑紧密耦合?这会带走依赖注入的好处吗?
我希望有人可以给我一个“傻瓜依赖注入”之类的答案,让我解释我的理解错误的地方。提前谢谢你:)
【问题讨论】:
-
您正在寻找Composition Root,这是连接您的应用程序的地方,它将使用来自所有层的所有 dll。
-
看看stairway pattern。基本上你总是在两个实现项目之间有一个接口项目,两个项目只“知道”接口项目,而不是(必然)彼此了解。然后,正如@SamHolder 所说,在您了解每个项目的组合根目录中,您进行必要的“管道”,即解决哪个实现类用于哪个接口。
标签: c# visual-studio-2013 dependency-injection