方法注入
通过使用构造函数注入,我们将不得不在Ordering类的生存期内使用实现类的实例SendingSMS或SendingEmail类.现在如果要在每次调用该方法时传递实现类的实例,则必须使用方法注入.
调用方式如下所示
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最常用的方法.如果需要在每个方法调用上传递不同的依赖关系,则可以使用方法注入属性注入的使用还是比较少的.
Referencehttps://zh.wikipedia.org/wiki/控制反转
https://zh.wikipedia.org/zh-hans/依赖反转原则