Inversion of Control - это не отсутствие ссылок на сборки, а создание договоров между вашей логикой и зависимыми сервисами.Это облегчает тестируемость и возможность повторного использования, абстрагируя конкретную реализацию ваших сервисов при их использовании.
Это позволяет, например, передавать другую службу данных, которая будет сохранять ваши данные в таблицу в памяти вместо базы данных, что означает, что вы не сохраняете данные в своей базе данных во время модульных тестов.,Ваша функция, которая выполняет работу, не заботится о том, что передается, потому что, что бы она ни была, она реализует общий интерфейс, с которым вы можете выполнять функции, с разумным предположением, что они будут работать.
Есть куча хороших ресурсовдоступны, чтобы узнать больше о шаблоне IOC / DI.Вот пара:
Ninject Sample
Статья Wiki
И какой-то сайт, называемый "переполнением стека"