代码之家  ›  专栏  ›  技术社区  ›  fig

DI容器如何工作的最简单解释?

  •  12
  • fig  · 技术社区  · 14 年前

    简单地说和/或在高级伪代码中,DI容器是如何工作的,它是如何使用的?

    3 回复  |  直到 14 年前
        1
  •  5
  •   Community Mr_and_Mrs_D    7 年前

    DI容器的核心是基于 映射 在界面和混凝土类型之间。

    这将允许您从容器中请求抽象类型:

    IFoo f = container.Resolve<IFoo>();
    

    这要求您以前 已配置

    这本身不会特别令人印象深刻,但DI容器做得更多:

    • 自动布线
    • 他们管理着

    一旦你开始尝试手动管理 一生 您应该开始欣赏DI容器提供的服务:)

    configuring via either code or XML .

    在适当的时候 a good overview .

        2
  •  4
  •   Finglas    14 年前

    " 只不过是个花哨的杂烩而已 "

    虽然上面是一个巨大的轻描淡写,这是一个简单的方式来考虑他们。给定集合,如果您请求一个类的相同实例,DI容器将决定是给您一个缓存版本还是一个新版本,依此类推。

    class House(Kitchen, Bedroom)
         // Use kitchen and bedroom.
    end
    
    class Kitchen()
        // Code...
    end
    
    class Bedroom()
       // Code...
    end
    

    不带DI/IOC容器:

    house = new House(new Kitchen(), new Bedroom());
    

    使用DI/IOC容器:

    house = // some method of getting the house
    

        3
  •  2
  •   Oded    14 年前

    您可以配置DI容器,以便它了解您的接口和类型—每个接口如何映射到类型。

    当你打电话的时候 Resolve 在它上面,它查看映射并返回您请求的映射对象。

    ISomething ,它将寻找混凝土 Something 要实例化并返回的类型。