Nil*_*Pun 3 c# design-patterns
可能重复:
控制反转<依赖注入
请问有谁可以帮我理解DI和IOC的简单C#例子吗?据我所知,IOC是控制流的反转(这对我来说没什么意义),DI意味着通过属性或构造函数注入接口.不确定这两者是如何相关的.
谢谢.
假设您有一个需要服务的课程:
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接口)
这很简单,我希望这会有所帮助.
我强烈建议您阅读.NET书籍中的依赖注入,它详细描述了具有全面代码示例的所有方面.对于控制的反转,你应该参考Robert Martin的另一本书:C#中的敏捷原则,模式和实践.它详细描述了SOLID原理以及示例和可理解的解释.这两本书真的帮助我理解了这些原则.
| 归档时间: |
|
| 查看次数: |
4320 次 |
| 最近记录: |