В данный момент я работаю над проектом, и он будет в основном основан на библиотеке.
Я хочу, чтобы библиотека использовалась с использованием внедрения зависимостей, но я хочу, чтобы библиотека была в значительной степени независимой от используемого контейнера.
Некоторое время назад я написал «мостовую» библиотеку, чтобы упростить подобные вещи, но я не был уверен, что это действительно правильный подход? (библиотека: https://github.com/clintkpearson/IoCBridge)
Я не хочу ссылаться на DI-технологию (Ninject, Windsor и т. Д.) Непосредственно из моей библиотеки, поскольку это делает ее негибкой для людей, использующих ее.
Есть еще несколько вопросов по SO в аналогичном ключе, но ни один из них, похоже, на самом деле не решает проблему удовлетворительно.
В качестве побочного примечания: я понимаю, что могу просто убедиться, что библиотека придерживается общей идиомы и использует аргументы интерфейсов и ctor для зависимостей, а затем просто оставить это на усмотрение приложения-потребителя для регистрации типов в контейнеры.
Единственная проблема, которую я вижу в этом (и поправьте меня, если я ошибаюсь), заключается в том, что для этого требуется, чтобы приложение-потребитель действительно знал, какие типы связаны с какими интерфейсами, нужно ли регистрировать некоторые как одиночные. и т.д ... и с точки зрения использования plug-and-play это довольно плохо.