Да, это как вызывать параметризованный конструктор, но нет, это не то, что вы должны делать.
Как вы понимаете, LogServiceHelper
имеет жесткую зависимость от класса Repository
, итак что вы правы, интерфейсы ничего вам не покупают.Однако, если им вводили :
public LogServiceHelper(IRepository attendanceRepo, IRepository userRepo)
{
_alrAttendance = attendanceRepo;
_alrUsers = userRepo;
}
Вы внезапно получаете преимущества абстракции.Примечательно, что модульный тест может проходить в поддельных репозиториях и что вы можете переключиться на другую реализацию IRepository
без изменения LogServiceHelper
.
Следующий вопрос: «Кто создает конкретный класс Repository
?».Для этого я отсылаю вас к различным контейнерам DI / IoC, таким как Autofac, Unity и NInject.