Asp.net-Mvc

將 Ninject 與 Membership.Provider 一起使用

  • July 26, 2013

我是 Ninject 的新手,在使用自定義會員提供程序時遇到問題。

我的會員提供者有一個儲存庫介面傳入。它看起來像:

public class CustomMembershipProvider : MembershipProvider
{
 public CustomMembershipProvider( IRepository repository )
 {
 }
}

我使用作為 MVC 應用程序中帳戶模型一部分的程式碼作為起點。

但是,當它呼叫時,Membership.Provider我收到一條錯誤消息No parameterless constructor defined for this object

我已經在 ninject 中設置了綁定以將 a 綁定IRepository到一個Repository類,該類在我在控制器中測試它時工作。

Ninject 中使用的正確綁定是Membership.Provider什麼?

這就是今天使用新版本的 MVC 和 Ninject(版本 3)應該如何完成的:

您可以訪問 DependencyResolver 實例,並且 Ninject 將自己設置為目前的 DependencyResolver。這樣你就不需要破解來訪問靜態的 Ninject 核心。請注意,我的範例使用我自己的 IUserService 儲存庫作為成員資格…

IUserService _userService = DependencyResolver.Current.GetService<IUserService>();

我找到的最佳解決方案如下:

private IRepository _repository;

[Inject]
public IRepository Repository
{
   get { return _repository; }
   set { _repository= value; }
}

public CustomMembershipProvider()
{
   NinjectHelper.Kernel.Inject(this);
}

NinjectHelper 是從中獲取核心的靜態幫助程序類。

引用自:https://stackoverflow.com/questions/4123092