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