lan*_*der 12 asp.net-mvc ninject asp.net-mvc-3
我是Ninject的新手,我在使用自定义会员提供商时遇到问题.
我的会员提供者传入了一个存储库接口.它看起来像:
public class CustomMembershipProvider : MembershipProvider
{
public CustomMembershipProvider( IRepository repository )
{
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用MVC应用程序中部分帐户模型的代码作为起点.
但是当它打电话时Membership.Provider我得到一个错误说No parameterless constructor defined for this object.
我已经在ninject中设置了绑定来绑定一个类,IRepository这个Repository类在我在控制器中测试它时起作用.
Ninject中用于什么是正确的绑定Membership.Provider?
mar*_*are 10
这就是今天应该如何使用MVC和Ninject(版本3)的新版本:
您可以访问DependencyResolver实例,Ninject将自己设置为当前的DependencyResolver.这样你就不需要黑客来访问静态Ninject内核了.请注意,我的示例使用我自己的IUserService存储库来存在...
IUserService _userService = DependencyResolver.Current.GetService<IUserService>();
Run Code Online (Sandbox Code Playgroud)
我找到的最佳解决方案如下:
private IRepository _repository;
[Inject]
public IRepository Repository
{
get { return _repository; }
set { _repository= value; }
}
public CustomMembershipProvider()
{
NinjectHelper.Kernel.Inject(this);
}
Run Code Online (Sandbox Code Playgroud)
NinjectHelper是一个从中获取Kernal的静态助手类.
由于Membership.Provider在Ninject可以实例化它们之前创建了成员资格集合和实例,因此您需要对该对象执行创建后激活.如果[Inject]在提供程序类中为属性标记依赖项,则可以调用kernel.Inject(Membership.Provider)- 这将为属性分配所有依赖项.
| 归档时间: |
|
| 查看次数: |
4732 次 |
| 最近记录: |