Ограничения и подводные камни
Принцип инверсии зависимостей может приводить к ситуациям, когда поток управления программы задан неявно, а явное — лучше неявного.
Неграмотное использование
При неграмотном и бесконтрольном использовании принципа и IoC-контейнеров в частности логика взаимодействия компонентов может оказаться размазанной по разным частям приложения. Это мешает восприятию программы, снижает тестируемость и увеличивает стоимость внесения изменений.
Кроме того, не все зависимости стоят того, чтобы их инвертировать. Отличить такие от остальных бывает трудно из-за, например, специфики предметной области.
Проблемы с DI
С инъекцией зависимостей тоже могут возникать проблемы.
При инъекции через конструктор большое количество зависимостей сильно увеличивает конструктор. А при неграмотном использовании DI могут появиться циклические зависимости.
В обоих случаях стоит посмотреть в сторону SRP. Скорее всего, класс делает слишком много, и его надо разбивать на более мелкие.