长话短说,我试图使用MVC 2和Ninject的ELMAH,并且我需要使用无参数的构造函数。我在这里创建了一个关于它的初始文章:Using a parameterless controller constructor with Ninject?使用属性注入而不是构造函数注入
我被建议使用属性注入而不是构造函数注入。
public class DepartmentsController : Controller
{
private IDepartmentsRepository departmentsRepository;
public DepartmentsController(IDepartmentsRepository departmentsRepository)
{
this.departmentsRepository = departmentsRepository;
}
...
}
这样::
public class DepartmentsController : Controller
{
private IDepartmentsRepository _departmentsRepository;
[Inject]
public IDepartmentsRepository DepartmentsRepository
{
get { return _departmentsRepository; }
set { _departmentsRepository = value; }
}
...
}
但我在其他控制器的功能,我是否尝试访问DepartmentsRepository或_departmentsRepository,我得到未设置为实例的对象的引用所以我从这个移动当我尝试访问它时,出现一个对象错误。
还有什么我需要做的吗?
你使用`Ninject.Web.Mvc`吗? – 2011-02-02 02:37:55
等什么?什么是要求你使用无参数的构造函数? – jfar 2011-02-02 05:36:24
我遇到了一个奇怪的问题,即在属性具有特定名称时,特定的依赖关系未得到解决。如果重命名它可以正常工作,但所有其他依赖项解析为正常(并且相同的依赖项在其他情况下解析为相同的属性名称)。我不知道为什么,但总是要尝试。 – 2011-05-19 11:01:12