ContactController
должно следовать Принцип явных зависимостей
Методы и классы должны явно требовать (обычно через параметры метода или параметры конструктора) любых взаимодействующих объектов, в которых они нуждаются для того, чтобыфункционируют правильно.
Также классы должны зависеть от абстракций и не быть связаны с конкрециями.
Таким образом, предполагая что-то вроде
public class ContactOperationsFacade: IContactOperationsFacade { //<-Note interface/contract
private readonly IContactRepository contactRepository;
public ContactOperationsFacade(IContactRepository contactRepositor){
this.contactRepository = contactRepository;
}
//...
}
Контроллер должен зависеть от абстракциичто фасад получен из
public class ContactController: Controller {
private readonly IContactOperationsFacade contactOperator;
public ContactController(IContactOperationsFacade contactOperator){
this.contactOperator = contactOperator;
}
//...
}
и предполагает, что все интерфейсы и реализации зарегистрированы в контейнере DI.
services.AddScoped<IContactOperationsFacade, ContactOperationsFacade>();
после регистрации всех зависимостей поставщик услуг должен разрешить ихпри активации контроллера.