Звідки береться Microsoft.Practices.ServiceLocation?


75

Хтось знає, звідки Microsoft.Practices.ServiceLocationбереться? Це простір імен і DLL, що використовуються в MS EnterpriseLibrary. Слід визнати, що це дуже проста dll з кількома класами (за допомогою рефлектора), але я не можу знайти опублікований вихідний код для неї. Це не в проекті Enterprise Library та не в проекті Unity.

Тож хтось знає, чи був опублікований вихідний код для цього і де? А також чому це не частина Єдності? Чи використовується воно де-небудь ще?


Інший відповідь , пов'язані з цим питанням: stackoverflow.com/a/25728456
Believe2014

Відповіді:


66

Це надходить з: https://github.com/unitycontainer/commonservicelocator

З опису проекту:

Бібліотека Common Service Locator містить спільний інтерфейс для розташування служби, на який розробники програм та фреймворку можуть посилатися. Бібліотека забезпечує абстракцію над IoC-контейнерами та локаторами послуг. Використання бібліотеки дозволяє додатку побічно отримувати доступ до можливостей, не покладаючись на жорсткі посилання. Сподіваємося, що за допомогою цієї бібліотеки сторонні програми та фреймворки можуть почати використовувати IoC / Service Location, не прив’язуючи себе до конкретної реалізації.

Ця абстракція реалізована кількома фреймворками IoC, і Unity є одним з них. тим не менше, Єдність не є власником цього проекту.

Таким чином, StructureMap , наприклад, забезпечує реалізацію цих класів, тому інші фреймворки (наприклад, Prism з шаблонів і практик) можуть легко працювати з іншими фреймворками IoC і не бути прив'язаними до самої Unity .


1
Зверніть увагу, що не тільки Prism, але й сама Бібліотека підприємства зараз є агностичною щодо контейнерів і може працювати з іншими контейнерами IoC.
Григорій Мельник

2
У мене була та сама помилка, але на моїй машині була встановлена ​​бібліотека Enterprise 4.1, а мій колега-розробник, який додав посилання на бібліотеку Enterprise до нашого загального рішення, зареєстрував версію Enterprise Library версії 5. Отже, у вас може бути проблема з версією бібліотеки Enterprise.

2
CommonServiceLocator версії 2.0 більше не включає Microsoft.Practices.ServiceLocation. Може, його просто переїхали? Я знизив (Nuget) до CommonServiceLocator 1.3 і посилання на проект Microsoft.Practices.ServiceLocation повернулось.
srock

7
З часу CommonServiceLocator 2.0.1 відбулася надзвичайна зміна. Простір імен Microsoft.Practices.ServiceLocationзмінено на CommonServiceLocator. @srock, тому немає необхідності знижувати версію.
Рубанов

14

Якщо ви хочете, ви можете взяти NuGetпакет тут:

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


1
У мене проблема, про яку згадував оригінальний плакат. Леніель, я спробував ваше рішення щодо встановлення пакета NuGet CommonServiceLocator, але це не вирішило моєї проблеми. Я здогадуюсь, що все змінилося після того, як ви згадали про це рішення ще в 2013 році. Чи знаєте ви, як вони змінилися?
Род,

1
@Rod: не зовсім ... Я давно помилився в цій помилці. Ніколи більше не було потреби працювати з цією бібліотекою.
Леніель Маккаферрі

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.