Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 依赖注入和服务定位_.net_Dependency Injection_Unity Container_Common Service Locator - Fatal编程技术网

.net 依赖注入和服务定位

.net 依赖注入和服务定位,.net,dependency-injection,unity-container,common-service-locator,.net,Dependency Injection,Unity Container,Common Service Locator,据我所知,依赖注入与服务位置不同。但是包含库(我认为它是一个服务定位器)。该库应该如何使用,何时使用,unity本身是否正在使用它进行依赖注入? 注意:请不要引用CodePlex主页中关于其用法的内容。公共服务定位器界面是为希望使用DI的图书馆作者设计的 容器,而不强制库在使用库的应用程序上选择容器。其目的是,在需要解析对象的库中,您可以针对CSL接口编写代码;然后,您可以使用调用您的应用程序正在使用的任何容器 如果您没有编写可重用的库组件,请不要使用CSL。这是一个额外的层,不会给你买任何东西

据我所知,依赖注入与服务位置不同。但是包含库(我认为它是一个服务定位器)。该库应该如何使用,何时使用,unity本身是否正在使用它进行依赖注入?

注意:请不要引用CodePlex主页中关于其用法的内容。

公共服务定位器界面是为希望使用DI的图书馆作者设计的 容器,而不强制库在使用库的应用程序上选择容器。其目的是,在需要解析对象的库中,您可以针对CSL接口编写代码;然后,您可以使用调用您的应用程序正在使用的任何容器


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

不,依赖注入和服务位置不是一回事,但是它们在功能上有很多相似之处。他们没有分享的更多的是一种哲学方法

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

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


换句话说,服务定位要求您找到所需的对象。依赖注入假设您创建的对象已经到位。

True words,但主要的困惑是Unity为什么要使用它,Unity是一个DI和MVVM轻型工具包。编辑:我认为@Chris Tavares提供了真正的原因。我认为你是对的,但是你能提供一个关于它是如何以这种方式使用的链接吗。@Sniffer请看一下的源代码。@SebastianWeber我会尝试看一看。