依赖注入和服务位置

时间:2012-11-17 16:38:46

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

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

2 个答案:

答案 0 :(得分:2)

Common Service Locator接口适用于想要使用DI的图书馆作者 容器没有强制库使用库在应用程序上选择容器。目的是在库中需要解析对象,而不是对CSL接口进行编码;那么你可以使用你正在使用的应用程序使用的任何容器。

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

答案 1 :(得分:1)

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

两者都提供对应用程序中配置的对象的访问。但是,依赖注入表示您永远不应该明确要求对象(或接口)。您应该指定一个对象或接口,框架将处理为您提供所有内容。

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

换句话说,服务地点要求您找到所需的对象。依赖注入假设您使用已经存在的对象创建。