【发布时间】:2011-11-23 20:20:33
【问题描述】:
我将 CustomRoleProver 设置为:
public class CustomRoleProvider : RoleProvider
{
private readonly IRepository<User> _repository;
public CustomRoleProvider(IRepository<User> repository)
{
_repository = repository;
}
...
在我的 Global.asax.cs 我有:
//Create Ninject DI kernel
var kernel = new StandardKernel();
kernel.Bind<IRepository<User>>().To<Repository<User>>();
//Tell ASP.NET MVC 3 to use our Ninject DI Container
DependencyResolver.SetResolver(new NinjectDependencyResolver(kernel));
当我尝试运行我的代码时,我得到:
配置错误 说明:处理服务此请求所需的配置文件期间发生错误。请查看下面的具体错误详情并适当修改您的配置文件。
解析器错误消息:没有为此对象定义无参数构造函数。
来源错误:
第 64 行: 第 65 行: 第 66 行: 第 67 行: 第 68 行:
所以也许我对 DI 和 ninject 的理解完全不正确。我认为当它尝试实例化 CustomRoleProvider 时,它会创建用户存储库并将其传递给构造函数,而不是尝试使用无参数的存储库。
是我理解错误还是我的设置不正确?
我觉得这很奇怪,因为 DI 似乎主要为控制器工作。
【问题讨论】:
标签: asp.net-mvc dependency-injection ninject