Сценарий:
Приложение MVC3, которое использует инжектор конструктора для предоставления услуг для данного контроллера:
public class HomeController : BaseController
{
private readonly IArticleService _articleService;
public HomeController(IArticleService articleService)
{
_articleService = articleService;
}
public ActionResult Index()
{
// do stuff with services
return View()
}
}
Намерение:
У меня есть UserService
, которыйизвлекает основные данные пользователя из Active Directory, которые я хочу использовать со всех моих контроллеров, с базового контроллера.
Я пытался внедрить этот сервис в мой BaseController
следующим образом:
public class BaseController : Controller
{
private readonly IUserService _userService;
public BaseController(IUserService userService)
{
_userService = userService;
}
}
Сам по себе он выглядит хорошо, но теперь конструктор в моем HomeController
отключен, так какдля этого нужен : base()
инициализатор.Проблема заключается в том, что базовый инициализатор не является параметром из-за внедрения UserService
.
public HomeController(IArticleService articleService) : base(IUserService userService)
Приведенный выше код приводит к синтаксическим ошибкам.
Вопрос (ы):
Как правильно внедрить сервис в мой BaseController
и инициализировать его из дочерних классов Controller (например, HomeController)?