c#-项目之间的依赖关系注入
作者:互联网
我试图围绕“依赖注入”的概念.我有一个视觉工作室解决方案.我将其分为3个项目:DataAccessLayer,ServiceLayer,BusinessLogicLayer.
ServiceLayer充当BusinessLogic和DataAccess之间的链接,从BusinessLogic隐藏SQL和LINQ语句之类的内容.
现在,许多在线教程建议使用DependencyInjection在我的BusinessLayer中使用ServiceLayer中的类.我相信,原因是BusinessLayer与ServiceLayer松散耦合.但是,当这两层(及其对应的类)位于不同的项目中时,我并不完全理解如何实现此目的.
根据在线教程,我将在ServiceLayer中使我的类实现一个Interface,这将在我的BusinessLayer中进行引用.但是,应该定义该接口的哪个项目?在ServiceLayer中定义此接口是有意义的.但是,从BusinessLayer引用此接口不会导致这些项目之间的逻辑紧密耦合吗?这会剥夺依赖注入的好处吗?
我希望有人能给我一个“傻瓜依赖注入”的答案,以解释我的理解错误的地方.先感谢您 :)
解决方法:
依赖注入是一件好事,因为它使您的代码独立于其他代码的实现.所有依赖项都应该通过构造函数(有时是属性)注入,在该构造函数中,您仅声明接口,而不声明实现.
例如,在这种情况下,您可以注入伪造的实现来运行单元测试.您还可以编写多个版本,例如,您可以通过一个公共接口支持多个数据库,并根据用户的选择注入适当的实现.
现在如何实现它.您可以将接口提取到另一个项目,例如“ Common”.这样可以防止您在不需要的地方添加对实现的引用.然后,您的BusinessLayer和ServiceLayer将引用Common.
您将拥有以下项目:
>通用-依赖关系的接口
> ServiceLayer-引用Common并实现这些接口
> BusinessLayer-引用Common并在构造函数中使用这些接口
>根-例如可以是WPF应用程序.它具有对所有层的引用.应该有一种机制,该机制能够从BusinessLayer创建实例并将ServiceLayer的适当实现注入到它们
您不必实现自己的IoC和DependencyInjection.例如,您可以查看:Caliburn.Micro-我真的很喜欢这个框架.
标签:visual-studio-2013,dependency-injection,c 来源: https://codeday.me/bug/20191120/2043254.html