Ох.. такой фигни вы нагородили. Вызывать Get<> вручную не очень хорошо, все должно быть заинжекчено через конструктор или пропертя. Почитайте еще немного про Dependency Injection(DI), понять самому это возможно)). Дальше будет стена текста, но она описывает реальную(сверическую в вакуме) ситуацию.
Касательно примера. Тут глубина вложености не большая и DI будет только мешать. Но давайте представим, что у вас есть веб сервер, который ждет запроса и возвращает определеные данные. Он эти данные должен откудато взять, нам их любезно готов предоставить некий сервис по имени Service, который реализует некий интерфейс IService. Для корретной роботы Service, тоже необходимы данные, которые он преобразует и вернет тому, кто их попросит. Он их достает из SuperServiceHelper(ISuperServiceHelper) и SuperPuperServiceHelper(ISuperPuperServiceHelper). Первый хелпер берет данные из репозиториев SomeEntityRepository(ISomeEntityRepository) и SomeGreenEntityRepository(ISomeGreenEntityRepository). Второй хелпер берет данные из SomeBlueEntityRepository(ISomeBlueEntityRepository) и SomeRedEntityRepository(ISomeRedEntityRepository). Ну и конешно мы хочем все это валидировать нам нужны валидаторы для каждой entity, которые для SomeEntityRepository нужен SomeEntityValidator, для SomeGreenEntityRepository нужен SomeGreenEntityValidator, для SomeBlueEntityRepository нужен SomeBlueEntityValidator, для SomeRedEntityRepository нужен SomeRedEntityValidator.
И так, вы не забыли с чего мы начали, после всей этой ваханалии(еще нам нужно, чтобы все это было покрыто тестами)? Ах да, нам нужен Service для того чтобы обработать запрос... Нам бл*** нужен только Service, здесь и сейчас. Вот здесь DI и IoC нас спасут, скажите только что вам нужен IService и вуаля, вся эта цепочка будет востановлена без нашего участия.