У меня есть проект MVC, использующий шаблон DI в моих контроллерах, использующий Unity для разрешения моих зависимостей.
Я недавно представил пакет WebApi, и это после внесения надоедливой ошибки.
Когда я пытаюсь внедрить свой класс обслуживания в контроллер веб-API, я получаю следующую ошибку:
"Произошла ошибка при попытке создать контроллер типа 'TestController'. Убедитесь, что контроллер имеет открытый конструктор без параметров."
Это код
public class TestController : ApiController
{
private readonly IBrokerService _brokerAccessService;
public TestController(IBrokerService brokerAccessService)
{
_brokerAccessService = brokerAccessService;
}
/// Controller methods here
}
Я могу добавить конструктор без параметров, вот так, и он отлично работает
public TestController()
{
_brokerAccessService = new BrokerService(new BrokerRepository(new ForexRebatesNowEntities()));
}
Но это полностью нарушает паттерн DI
У меня есть эта служба, внедренная в другие контроллеры (основанные на MVC 'BaseController', а не на WebApi 'ApiController'), и нет никаких проблем
Есть ли разница в том, как контроллеры MVC и контроллеры APi обрабатывают DI?