通过使用构造函数注入,我们将不得不在Ordering类的生存期内使用实现类的实例SendingSMS或SendingEmail类.现在如果要在每次调用该方法时传递实现类的实例,则必须使用方法注入.
public class Ordering { public void Order(ICustomerCommunication customerComm,string message){ _customerComm=customerComm; _customerComm.Send(message); } }
调用方式如下所示
SendingSMS sendingSMS=new SendingSMS(); Ordering ordering=new Ordering(sendingSMS); ordering.Order(sendingSMS,"msg");
属性注入
通过如上描述我们知道了构造函数注入方法在整个生命周期中使用依赖类,而方法注入是将我们的注入直接去限于该方法中,然后我们再去了解一下属性注入
public class Ordering { public ICustomerCommunication customerComm {get;set;} public void Order(string message){ _customerComm.Send(message); } }
调用方式如下所示
SendingSMS sendingSMS=new SendingSMS(); Ordering ordering=new Ordering(sendingSMS); ordering.customerComm=sendingSMS; ordering.Order("msg");
其实构造函数注入是实现DI最常用的方法.如果需要在每个方法调用上传递不同的依赖关系,则可以使用方法注入属性注入的使用还是比较少的.
Reference
https://zh.wikipedia.org/wiki/控制反转
https://zh.wikipedia.org/zh-hans/依赖反转原则
到此这篇关于.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)的文章就介绍到这了,更多相关.NET IoC模式依赖反转、控制反转、依赖注入内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章: