IOC和接口

Ric*_*nks 6 c# dependency-injection inversion-of-control c#-4.0

我有一个像这样的项目结构: -

CentralRepository.BL
CentralRepository.BO
CentralRepository.DataAccess
CentralRepository.Tests
CentralRepository.Webservices
Run Code Online (Sandbox Code Playgroud)

并且这些之间存在大量的依赖关系.我想利用unity来减少依赖关系,所以我要为我的类创建接口.我的问题是接口应该驻留在哪个项目中.我的想法是它们应该在BO层中.请有人给我一些指导

Mar*_*ann 6

在组合级别,您有三个选项:

  • 在单独的库中定义接口
  • 与消费者一起定义界面
  • 定义接口及其实现者

但是,最后一个选项是一个非常糟糕的主意,因为它将接口与实现者紧密耦合(或者相反).由于首先引入接口的全部意义在于减少耦合,因此不会有任何好处.

与消费者一起定义界面通常就足够了,而且我个人只需要在不同的消费者处于竞争状态时在单独的库中定义界面(如果您运送的是公共API,则通常会发生这种情况).