【发布时间】:2012-02-08 00:43:39
【问题描述】:
场景:
使用构造函数注入为给定控制器提供服务的 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)初始化它?
【问题讨论】:
标签: c# asp.net-mvc-3 dependency-injection controller initialization