Как я могу определить общий экспорт, не полагаясь на библиотеки IOC? - PullRequest
1 голос
/ 24 июля 2010

Я работаю над библиотекой, которая должна использовать общий локатор службы (http://commonservicelocator.codeplex.com/), чтобы обеспечить общую поддержку IOC, чтобы мы не конфликтовали с какими-либо потребителями. Очевидно, я не хочу ссылаюсь на фреймворки IOC непосредственно в моем проекте, но я не уверен относительно того, как аннотировать детали таким образом, чтобы их можно было найти в различных фреймворках. Реализует аннотацию. Обе эти аннотации определены в соответствующих проектах, требуя, чтобы я сослался на них обоих.

Как мне избежать добавления всех этих классов и аннотирования всех моих классов несколько раз? Конечно, он плохо адаптируется к новым IOC-структурам, так как для аннотаций каждой новой платформы потребуется перестройка.

1 Ответ

2 голосов
/ 24 июля 2010

Из документации:

"Библиотеки не должны настраивать контейнер "

"Как автор библиотеки или фреймворка, понимаю, что ты не должен быть положить что-нибудь в контейнер - это работа вашего звонящего. Разрешать авторы приложений, чтобы выбрать любой контейнер, который они хотят. Тебе нужно документировать, какие услуги вам нужны зарегистрирован, и если вы используете ServiceLocation.Current ambient контейнер. "

Так что я не думаю, что вам нужно что-то экспортировать, просто документируйте, что вам нужно потреблять для запуска. И дополнительно используйте интерфейс ServiceLocator.Current для разрешения любых зависимостей, которые вам нужны.

...