我正在使用Ninject MVC来绑定我的控制器中使用的服务。
控制器非常复杂,并且有许多方法,这些方法需要不同的服务。
我的问题是:对于向控制器构造函数发送在不同操作中使用的所有服务,这是否过分?
在构造函数中发送Ninject Activator,然后使用激活器来实例化服务会更有意义吗?
public class DefaultController : Controller
{
private readonly Service1 _service1;
private readonly Service2 _service2;
private readonly Service3 _service3;
public DefaultController(
Service1 service1,
Service2 service2,
Service3 service3)
{
_service1 = service1;
_service2 = service2;
_service3 = service3;
}
public ActionResult Action1()
{
var result = _service1.GetResult();
return View();
}
public ActionResult Action2()
{
var result = _service2.GetResult();
return View();
}
public ActionResult Action3()
{
var result = _service3.GetResult();
return View();
}
}
VS
public class DefaultController : Controller
{
private readonly IKernel _kernel;
public DefaultController(IKernel kernel)
{
_kernel = kernel;
}
public ActionResult Action1()
{
Service1 _service1 = _kernel.Get<Service1>();
var result = _service1.GetResult();
return View();
}
public ActionResult Action2()
{
Service2 _service2 = _kernel.Get<Service2>();
var result = _service2.GetResult();
return View();
}
public ActionResult Action3()
{
Service3 _service3 = _kernel.Get<Service3>();
var result = _service3.GetResult();
return View();
}
}