Я не уверен, откуда у вас мысль, что инъекция в конструктор не соответствует DI. Я бы сказал, что реальная ситуация противоположна этому: внедрение конструктора - это один из самых распространенных шаблонов, используемых для достижения внедрения зависимостей - я бы сказал, что это самый распространенный шаблон и это представление, безусловно, подтверждается тем фактом, что большинство контейнеров Inversion of Control (DI-контейнеры) используют инъекцию конструктора в качестве предпочтительного механизма.
StructureMap, например, имеет ядро, очень специфическую поддержку для инжектора конструктора, где он выберет конструктор с наибольшим количеством параметров в качестве конструктора, используемого для разрешения зависимостей.
То, что вы говорите, используя шаблон внедрения конструктора, это то, что «я удаляю жестко закодированные зависимости внутри моего класса, определяя их как параметры, передаваемые в конструктор - мой класс не может быть создан без этих зависимостей». Конечно, первая половина этого утверждения является сущностью DI, но вторая половина усиливает это.
Зависимости - это детали реализации, которые можно легко менять, обеспечивая гибкое, слабо связанное решение. Они о том, как, а не как. Интерфейсы определяют что. Поэтому я бы сказал, что ваше предложение об определении зависимостей в интерфейсах фактически противоречит концепции внедрения зависимостей.
А что касается вашего утверждения о фабриках - это именно то, что представляют собой контейнеры IOC - большие фабрики, которые заботятся о дереве зависимостей решения, так что вам не нужно заботиться.
Редактировать
Я думаю, что, возможно, вы спрашиваете о случае, когда вы хотите предоставить параметр конструктора вне зависимости, такой как идентификатор для ссылочной сущности или enum начального состояния?
Лично я не вижу проблемы с контейнером IOC, позволяющей это сделать. Это все еще начальное состояние вашего класса, и, следовательно, правила для создания этого состояния должны быть явно выражены. Это может означать, что вам иногда нужно больше ссылок на ваш контейнер IOC, которые вам могут понравиться, но это не настолько ужасная ситуация, чтобы отказаться от других преимуществ инъекции в конструктор.