Asp.net-Mvc
將 Ninject 與 Membership.Provider 一起使用
我是 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 是從中獲取核心的靜態幫助程序類。