c# - IOC 和接口(interface)

标签 c# c#-4.0 dependency-injection inversion-of-control

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

CentralRepository.BL
CentralRepository.BO
CentralRepository.DataAccess
CentralRepository.Tests
CentralRepository.Webservices

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

最佳答案

在组合层面上,您有三个选择:

  • 在单独的库中定义接口(interface)
  • 与消费者一起定义接口(interface)
  • 与实现者一起定义接口(interface)

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

与消费者一起定义接口(interface)通常就足够了,我个人只在不同的消费者在玩时才采取额外的步骤在单独的库中定义接口(interface)(如果你发布一个公共(public)的,这通常会发生API)。

关于c# - IOC 和接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7742858/

相关文章:

c# - 无法加载文件或程序集 'System.Web.Extensions'

c# - 可观察对象/动态接口(interface)?

c# - 启动前显示对话框时,WPF应用程序立即退出

c# - 如何在 asp.net 中创建模块?

c# - WCF - 如何获得一些 channel 标识符?

C# 对象在构造函数外构造

c# - 将 Kinect 的骨架数据与 XNA 中的 .fbx 模型相匹配

c# - Entity Framework Code First - 为什么我不能以这种方式更新复杂的属性?

Spring 注入(inject)工具 :map in Kotlin with type safety

node.js - NestJS 未定义的依赖项