当在mvc3中使用Ninject时,我们会做一些类似的事情,比如安装ninject,注册器模块或服务。
我们像这样编写控件
public class HomeController : Controller
{
private IHelloService _service;
public HomeController(IHelloService service)
{
_service = service;
}
public string Index()
{
return _service.GetGreeting();
}
}
我想做一些像这样的事情
public class HomeController : Controller
{
private IHelloService _service;
/*
No default constructor
*/
public string Index()
{
_service= Ask_Ninject_to_provide_resource
return _service.GetGreeting();
}
}
发布于 2011-10-23 15:58:06
public class HomeController : Controller
{
private IHelloService _service;
/*
No default constructor
*/
public string Index()
{
_service= DependencyResolver.Current.GetService<IHelloService>();
return _service.GetGreeting();
}
}
尽管我会严肃地质疑这样做的必要性。
发布于 2011-10-23 16:00:50
您当前编写控件的实践比您提出的更好。您希望能够通过字段进行注入,而不是通过构造函数。这不是一个好主意,我们不推荐这样做。
引用自Ninject wiki
“尽管它的简单性很诱人,但您通常应该尽量避免使用字段注入,因为只能通过Ninject设置值。这使得单元测试变得更加复杂,因为有时手动使用依赖项注入将模拟对象注入到单元测试中是最容易的。(使用Ninject进行单元测试将在后面进行更深入的讨论。)”
另一种选择是通过属性注入,但同样,您必须有一个非常好的理由这样做。在大多数情况下,构造函数注入应该可以完成这项工作。
https://stackoverflow.com/questions/7864953
复制相似问题