Ничто не говорит о том, что вам нужно использовать контейнер IoC, просто контейнеры IoC предварительно собраны, и вам не нужно писать код самостоятельно.Это означает, что вы можете сконцентрироваться на создании своего приложения, а не собственной системы DI.
Это похоже на создание пользовательского интерфейса или использование стороннего элемента управления.Обе работы, это просто зависит от того, где вы хотите провести время.Я знаю, что мне не особо важно создавать собственную DI-систему, поэтому я бы предпочел использовать предварительно созданную.
Вы можете также спросить, зачем вообще использовать фреймворк, если вы можете писать напрямуюк API ОС.Это все о повышении надежности (путем повторного использования кода, который кто-то другой уже написал и потратил много времени, чтобы убедиться, что он не содержит ошибок) и повышения вашей производительности (без необходимости писать все самостоятельно).
РЕДАКТИРОВАТЬ:
Существует множество способов реализации DI.Вы всегда можете посмотреть на все контейнеры, которые там есть, и как они работают.Все они с открытым исходным кодом, и исходный код доступен.