IOC / DI消除了接口定义

时间:2012-04-23 05:23:44

标签: c# interface inversion-of-control

我已阅读有关依赖注入的IOC / DI。它说要创建我们希望注入的每个类的接口。它是否违反了接口的定义(实现我们想要在类中强制执行的行为)。任何帮助将受到高度赞赏。感谢。

2 个答案:

答案 0 :(得分:2)

我认为你的主要困惑在于,在DI / IoC场景中,我们没有想要注入的,我们有一个服务我们想要注射假设我有一个Logger课程。它不是我要注入的Logger类本身,它是ILogger接口描述的一组日志记录服务。如果我没有使用DI或IoC,我会在每个班级中找到一个位置ILogger _logger = new Logger(),或者ILogger _logger = Logger.Instance,两者都将我的代码耦合到{{{ 1}}接口。但是使用DI / IoC,我将这一步留给了框架,并且不需要考虑我的业务逻辑类中的特定实现。

答案 1 :(得分:1)

  
    

它是否违反了接口的定义(实现我们想要在类中强制执行的行为)?

  

不,不。

您创建界面的这一事实意味着您正在定义行为。您是否打算使用DI来实现您的实施并非完全相关。