Я, наконец, обертываю голову вокруг IoC и DI на С#, и я борюсь с некоторыми из краев. Я использую контейнер Unity, но я думаю, что этот вопрос применяется более широко.
Использование контейнера IoC для выдачи экземпляров, которые реализуют IDisposable freaks me out! Как вы должны знать, должен ли вы Dispose()? Возможно, экземпляр был создан именно для вас (и для этого вы должны Dispose()), или это может быть экземпляр, чья жизнь управляется в другом месте (и для этого вам лучше не делать этого). Ничто в коде не говорит вам, и на самом деле это может измениться в зависимости от конфигурации!!! Это кажется мне смертельным.
Могут ли какие-либо эксперты IoC описать хорошие способы справиться с этой двусмысленностью?