这是一个很好的例子,让您轻松理解如何反转和反转注入装饰词。
我将按照以下每个步骤改进代码:
第1步:普通课
public class cart { private readonly idatabase _db; private readonly ilogger _log; private readonly iemailsender _es; public cart() { _db = new database(); _log = new logger(); _es = new emailsender(); } public void checkout(int orderid, int userid) { _db.save(orderid); _log.loginfo("order has been checkout"); _es.sendemail(userid); } }
第2步:应用依赖注入
public cart(idatabase db, ilogger log, iemailsender es) { _db = db; _log = log; _es = es; } //dependency injection simple way cart mycart = new cart(new database(), new logger(), new emailsender()); //when you want to change new class. update here mycart = new cart(new xmldatabase(), new fakelogger(), new fakeemailsender());
第 3 步:应用依赖图绑定
//Create each Interface DIContainer.SetModule<idatabase database>(); DIContainer.SetModule<ilogger logger>(); DIContainer.SetModule<iemailsender emailsender>(); DIContainer.SetModule<cart cart>(); //MyCart just need to use it var myCart = DIContainer.GetModule(); public Cart() { _db = DIContainer.GetModule(); _log = DIContainer.GetModule(); _es = DIContainer.GetModule(); } //When you want to change some module in Cart. Just need to change in where it define. DIContainer.SetModule<idatabase xmldatabase>();` </idatabase></cart></iemailsender></ilogger></idatabase>
想要了解更多内容,请持续关注码农资源网,一起探索发现编程世界的无限可能!
本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
如有侵权请发送邮件至1943759704@qq.com删除
码农资源网 » Inversify 和 Inversify-inject-decorators
本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
如有侵权请发送邮件至1943759704@qq.com删除
码农资源网 » Inversify 和 Inversify-inject-decorators