Основная причина использования инверсии зависимостей состоит в том, чтобы позволить различным реализациям этих низкоуровневых модулей быть выбранными либо во время компиляции в приложении, либо во время выполнения по конфигурации. Это большой выигрыш для тестирования, поскольку он позволяет полностью изолировать тестируемый код и использовать фиктивные объекты .
Еще один способ, которым эта огромная помощь - это развертывание клиентов. Допустим, у вас есть разные клиенты с разными системами аутентификации, или разными базами данных, или системами отчетности, или чем-то еще. Вы можете настроить их систему во время развертывания, изменив файл XML, чтобы выбрать правильные реализации этих компонентов для загрузки, без каких-либо изменений кода.