Ste*_*ven 12 c# asp.net-mvc elmah ninject
长话短说,我正在尝试将ELMAH用于MVC 2和Ninject,我需要使用无参数构造函数.我在这里创建了一个关于它的初始帖子:在Ninject中使用无参数控制器构造函数?
我被建议使用属性注入而不是构造函数注入.所以我离开了这个:
public class DepartmentsController : Controller
{
private IDepartmentsRepository departmentsRepository;
public DepartmentsController(IDepartmentsRepository departmentsRepository)
{
this.departmentsRepository = departmentsRepository;
}
...
}
Run Code Online (Sandbox Code Playgroud)
对此:
public class DepartmentsController : Controller
{
private IDepartmentsRepository _departmentsRepository;
[Inject]
public IDepartmentsRepository DepartmentsRepository
{
get { return _departmentsRepository; }
set { _departmentsRepository = value; }
}
...
}
Run Code Online (Sandbox Code Playgroud)
但在我的其他控制器函数中,无论我是否尝试访问DepartmentsRepository或_departmentsRepository,当我尝试访问它时,我得到的对象引用未设置为对象错误的实例.
我还需要做些什么吗?
lan*_*der 11
我遇到了类似的问题.看看我的问题:使用Ninject和Membership.Provider.
基本上,当你初始化时,DepartmentsController你需要注入this(即你的部门控制器进入你的Ninject核心.所以它的东西像:
public class DepartmentsController : Controller
{
private IDepartmentsRepository _departmentsRepository;
[Inject]
public IDepartmentsRepository DepartmentsRepository
{
get { return _departmentsRepository; }
set { _departmentsRepository = value; }
}
public DepartmentsController()
{
NinjectHelper.Kernel.Inject(this);
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,NinjectHelper获取当前的Ninject内核.
对象引用未设置异常可能有两个原因。
1) Ninject 不知道如何将 IDepartmentsRepository 绑定到 DepartmentsRepository 的具体实现(但我怀疑情况确实如此)
2)如果您尝试在控制器的构造函数中访问 DepartmentsRepository 属性,它将抛出异常(因为 Ninject 只能在构造对象后注入属性依赖项)。
希望有帮助。
| 归档时间: |
|
| 查看次数: |
25716 次 |
| 最近记录: |