C# 依赖注入我的接口去哪里了?

C# 依赖注入我的接口去哪里了?,c#,dependency-injection,unity-container,C#,Dependency Injection,Unity Container,我是DI容器的新手,一直在读一些书,我想知道你们能否帮我完成我的第一个示例项目 我将MVC5应用程序分为n层模块。我让演示模块通过defaultcontrollerfactory将IDataAdapter注入控制器。然后通过构造函数注入将该dataadapter传递到服务类,该服务类通过IDataAdapter与数据访问层进行对话。 我的问题是,IDataAdapter接口类应该位于哪里,显然实现该接口的具体类需要位于数据访问层中。我可以将接口留在DAL中,但是我需要在我的视图和DAL之间进行硬

我是DI容器的新手,一直在读一些书,我想知道你们能否帮我完成我的第一个示例项目

我将MVC5应用程序分为
n
层模块。我让演示模块通过
defaultcontrollerfactory将
IDataAdapter
注入控制器。
然后通过构造函数注入将该
dataadapter
传递到服务类,该服务类通过
IDataAdapter与数据访问层进行对话。

我的问题是,
IDataAdapter
接口类应该位于哪里,显然实现该接口的具体类需要位于数据访问层中。我可以将接口留在DAL中,但是我需要在我的视图和DAL之间进行硬引用,而这似乎并不正确


因此,我创建了一个单独的项目库来保存容器逻辑和数据适配器,但现在我遇到了一个循环依赖,我的
DataAdapter
需要实现
IDataAdapter
接口,但是我的unity注册文件不知道DataAdapter具体类是什么,因为它不能引用DAL。

在使用依赖项注入时,最好将所有接口都放在一个单独的程序集中,这样就可以避免任何循环依赖项

推荐解决方案结构的高级图:


正如敏捷原则、模式和实践在第11章“客户[…]拥有抽象接口”中所解释的那样。另请参见简短的回答:客户机应该定义它所需的接口,这几乎肯定不像
IDataAdapter
,这听起来像是一个泄漏的抽象。有关讨论,请参阅。当您链接到网站时,请披露您与网站的联系。有关详细信息,请参阅