【问题标题】:Dependency injection and service location依赖注入和服务定位
【发布时间】:2012-11-17 16:38:46
【问题描述】:

据我所知,依赖注入与服务位置不同。但Unity application block 包含Common Service Locator 库(我认为这是一个服务定位器)。应该如何使用该库以及何时使用它,以及它是否被 unity 本身用于依赖注入?
注意:请不要引用 CommonServiceLocator CodePlex 主页上的使用情况。

【问题讨论】:

    标签: .net dependency-injection unity-container common-service-locator


    【解决方案1】:

    Common Service Locator 接口适用于想要使用 DI 的库作者 容器而不强制库在使用该库的应用程序上选择容器。目的是在需要解析对象的库中,改为针对 CSL 接口编写代码;那么你可以使用调用你的应用程序使用的任何容器。

    如果您不编写可重用的库组件,请不要使用 CSL。这是一个额外的层,不会给你带来任何东西。

    【讨论】:

    • 我认为你是对的,但你能否提供一个链接,说明它是如何使用的。
    • @Sniffer 看看Enterprise Library的源码。
    • @SebastianWeber 我会尝试看看。
    【解决方案2】:

    不,依赖注入与服务位置不同,但它们确实有很多功能相似之处。他们不分享的更多的是一种哲学方法。

    两者都提供对应用程序中配置的对象的访问。然而,依赖注入说你永远不应该明确地请求一个对象(或接口)。相反,您应该指定一个对象或接口,框架将为您处理所有事情。

    服务位置是您直接从服务定位器系统请求对象的地方。

    换句话说,服务位置要求您找到您想要的对象。依赖注入假设你是用你需要的对象创建的。

    【讨论】:

    • 真实的话,但主要的困惑是为什么它被 Unity 使用,它是一个 DI 和 MVVM Light Toolkit。编辑:我认为@Chris Tavares 提供了真正的原因。
    猜你喜欢
    • 1970-01-01
    • 2013-01-21
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    • 2014-10-30
    • 1970-01-01
    相关资源
    最近更新 更多