卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章69462本站已运行4221

Inversify 和 Inversify-inject-decorators

inversify 和 inversify-inject-decorators

这是一个很好的例子,让您轻松理解如何反转和反转注入装饰词。

我将按照以下每个步骤改进代码:

第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>
卓越飞翔博客
上一篇: CSS 令人困惑?你不是一个人
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏