Microsoft.Practices.ServiceLocation是从哪里来的?

79

有人知道Microsoft.Practices.ServiceLocation是从哪里来的吗?这是MS EnterpriseLibrary中使用的一个命名空间和dll。诚然,它只是一个非常简单的dll,只有少数几个类(使用反编译器),但我找不到它的已发布源代码。它既不在Enterprise Library项目中,也不在Unity项目中。

那么,有人知道这个的源代码是否已发布以及在哪里吗?而且为什么它不是Unity的一部分呢?它还在其他地方使用吗?


这个问题的另一个答案:https://dev59.com/4moy5IYBdhLWcg3wnfUi#25728456 - Believe2014
3个回答

68

来源: https://github.com/unitycontainer/commonservicelocator

项目描述:

Common Service Locator库提供了一个共享接口,用于应用程序和框架开发人员进行服务定位。该库在IoC容器和服务定位器上提供了一个抽象层。使用该库允许应用程序间接访问这些功能,而不依赖硬引用。希望通过使用此库,第三方应用程序和框架可以开始利用IoC / Service Location,而不会将自己绑定到特定的实现。

这种抽象由许多IoC框架实现,其中Unity是其中之一。然而,Unity并不是该项目的所有者。

这样,例如StructureMap就提供了这些类的实现,因此其他框架(如来自patterns & practices的Prism)可以轻松地与其他IoC框架一起工作,而不受制于Unity本身。


1
请注意,现在企业库本身不仅与Prism无关,而且可以与其他IoC容器一起运行。 - Grigori Melnik
2
我曾经遇到过同样的错误,但是我的机器上安装了企业库4.1版本,而将企业库引用添加到我们共同解决方案中的同事则使用了企业库5版本。因此,你可能存在企业库版本问题。 - user18443
2
CommonServiceLocator 2.0版本不再包括Microsoft.Practices.ServiceLocation。也许它只是被移动了?我将其降级(Nuget)到CommonServiceLocator 1.3,项目引用Microsoft.Practices.ServiceLocation又回来了。 - srock
10
自 CommonServiceLocator 2.0.1 版本以来,有一项重大更改。命名空间 Microsoft.Practices.ServiceLocation 已更改为 CommonServiceLocator。@srock 所以不需要降级。 - MonkeyDreamzzz

15

1
我遇到了原帖提到的问题。Leniel,我尝试了你安装NuGet包CommonServiceLocator的解决方案,但它并没有解决我的问题。我猜想自从你在2013年提出这个解决方案以来,事情已经发生了变化。你知道它们是如何改变的吗? - Rod
1
@Rod:不是很确定...我很久以前就遇到了这个错误。再也没有使用过这个库的需要了。 - Leniel Maccaferri

4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接