Woher kommt Microsoft.Practices.ServiceLocation?

75

Weiß jemand woher Microsoft.Practices.ServiceLocationkommt? Dies ist ein Namespace und eine DLL, die in MS EnterpriseLibrary verwendet werden. Zugegeben, es ist eine sehr einfache DLL mit nur einer Handvoll Klassen (mit Reflektor), aber ich kann keinen veröffentlichten Quellcode dafür finden. Es ist nicht im Enterprise Library-Projekt und nicht im Unity-Projekt.

Weiß also jemand, ob und wo der Quellcode dafür veröffentlicht wurde? Und warum gehört es nicht zur Einheit? Wird es woanders verwendet?

Andrew Savinykh
quelle
Eine andere Antwort im Zusammenhang mit dieser Frage: stackoverflow.com/a/25728456
Believe2014

Antworten:

66

Es kommt von: https://github.com/unitycontainer/commonservicelocator

Aus der Projektbeschreibung:

Die Common Service Locator-Bibliothek enthält eine gemeinsam genutzte Schnittstelle für den Service-Standort, auf die Anwendungs- und Framework-Entwickler verweisen können. Die Bibliothek bietet eine Abstraktion über IoC-Container und Service Locators. Durch die Verwendung der Bibliothek kann eine Anwendung indirekt auf die Funktionen zugreifen, ohne auf harte Referenzen angewiesen zu sein. Die Hoffnung ist, dass mit dieser Bibliothek Anwendungen und Frameworks von Drittanbietern beginnen können, IoC / Service Location zu nutzen, ohne sich an eine bestimmte Implementierung zu binden.

Diese Abstraktion wird von mehreren IoC-Frameworks implementiert, und Unity ist eines davon. Dennoch ist Unity nicht der Eigentümer dieses Projekts.

Auf diese Weise bietet StructureMap beispielsweise die Implementierung dieser Klassen, sodass andere Frameworks (wie Prism aus Mustern und Praktiken) problemlos mit anderen IoC-Frameworks zusammenarbeiten können und nicht an Unity selbst gebunden sind .

Julian Dominguez
quelle
1
Beachten Sie, dass nicht nur Prism, sondern auch die Unternehmensbibliothek selbst containerunabhängig ist und mit anderen IoC-Containern ausgeführt werden kann.
Grigori Melnik
2
Ich hatte den gleichen Fehler, aber ich hatte Enterprise Library 4.1 auf meinem Computer installiert, und mein Entwicklerkollege, der den Enterprise Library-Verweis zu unserer allgemeinen Lösung hinzufügte, hatte Enterprise Library Version 5 eingecheckt. Möglicherweise liegt also ein Problem mit der Enterprise Library-Version vor.
2
CommonServiceLocator Version 2.0 enthält nicht mehr Microsoft.Practices.ServiceLocation. Vielleicht ist es gerade umgezogen? Ich habe ein Downgrade (Nuget) auf CommonServiceLocator 1.3 durchgeführt und die Projektreferenz Microsoft.Practices.ServiceLocation ist zurück.
Srock
7
Seit CommonServiceLocator 2.0.1 gibt es eine grundlegende Änderung. Der Namespace Microsoft.Practices.ServiceLocationwird in geändert CommonServiceLocator. @srock also kein Downgrade nötig.
Rubanov
14

Wenn Sie möchten, können Sie das NuGetPaket hier herunterladen :

http://www.nuget.org/packages/CommonServiceLocator/

Leniel Maccaferri
quelle
1
Ich habe das Problem, das auf dem Originalplakat erwähnt wurde. Leniel, ich habe versucht, das NuGet-Paket CommonServiceLocator zu installieren, aber mein Problem wurde dadurch nicht gelöst. Ich vermute, dass sich die Dinge geändert haben, seit Sie diese Lösung 2013 erwähnt haben. Wissen Sie, wie sie sich geändert haben?
Rod
1
@ Rod: nicht wirklich ... Ich habe diesen Fehler vor langer Zeit getroffen. Ich musste nie wieder mit dieser Bibliothek arbeiten.
Leniel Maccaferri