简单C#中的DI和IOC示例

Nil*_*Pun 3 c# design-patterns

可能重复:
控制反转<依赖注入

请问有谁可以帮我理解DI和IOC的简单C#例子吗?据我所知,IOC是控制流的反转(这对我来说没什么意义),DI意味着通过属性或构造函数注入接口.不确定这两者是如何相关的.

谢谢.

Bas*_*nni 6

假设您有一个需要服务的课程:

public class A 
{
  IEmailSender _emailSender
  public A(IEmailSender emailSender)
  {
    _emailSender = emailSender;
  }

  private void SendEmail()
  { 
    _emailSender.Send();
  }
}
Run Code Online (Sandbox Code Playgroud)

现在认为A类依赖于IEMailSender,这意味着它需要一个实现IEMailSender的对象才能执行它的功能.

像ninject或autofac这样的依赖注入框架将负责创建一个实现IEMailSender并将其注入A的构造函数的对象,只要您告诉他们如何创建这样的对象.

使用ninject:

Bind<IEmailSender>().To<EmailSender>();
Run Code Online (Sandbox Code Playgroud)

这是告诉ninject,每当一个类需要一个IEMailSender时,给他们EmailSender(假设当然EmailSender实现了IEMailSender接口)

这很简单,我希望这会有所帮助.


Eug*_*rda 5

我强烈建议您阅读.NET书籍中的依赖注入,它详细描述了具有全面代码示例的所有方面.对于控制的反转,你应该参考Robert Martin的另一本书:C#中的敏捷原则,模式和实践.它详细描述了SOLID原理以及示例和可理解的解释.这两本书真的帮助我理解了这些原则.