Формальным типом параметра является тип интерфейса - это означает, что вы можете передать любой объект, который реализует этот интерфейс (или, скорее, экземпляр объекта, который реализует интерфейс).
Вы не передаете интерфейс, вы передаете объект , который соответствует контракту, определенному интерфейсом.
Итак, если вашим источником данных является SQL Server, вы передадите SqlDataReader
, если Oracle, OracleDataReader
.
Вы также можете реализовать свое собственное устройство чтения данных и передать его функции и даже написать имитатор данных для тщательного тестирования метода.
Это хорошо известный принцип проектирования - Программа для интерфейса, а не реализация .
А из MSDN - Когда использовать интерфейсы :
Интерфейсы являются мощным инструментом программирования, поскольку они позволяют отделить определение объектов от их реализации.