代码之家  ›  专栏  ›  技术社区  ›  lancscoder

将Ninject与Membership.Provider一起使用

  •  12
  • lancscoder  · 技术社区  · 15 年前

    我是Ninject的新手,在与自定义成员资格提供商一起使用时遇到问题。

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

    我使用MVC应用程序中帐户模型的一部分代码作为起点。

    Membership.Provider 我说错话了 No parameterless constructor defined for this object .

    IRepository 给一个 Repository 类,它在控制器中进行测试。

    成员资格。提供程序 ?

    4 回复  |  直到 12 年前
        1
  •  10
  •   mare    14 年前

    这就是现在MVC和Ninject(版本3)的新版本应该如何实现的:

    您可以访问DependencyResolver实例,并且Ninject将自身设置为当前DependencyResolver。这样就不需要黑客来访问静态Ninject内核。请注意,我的示例使用我自己的IUserService存储库作为成员。。。

    IUserService _userService = DependencyResolver.Current.GetService<IUserService>();
    
        2
  •  9
  •   lancscoder    15 年前

    private IRepository _repository;
    
    [Inject]
    public IRepository Repository
    {
        get { return _repository; }
        set { _repository= value; }
    }
    
    public CustomMembershipProvider()
    {
        NinjectHelper.Kernel.Inject(this);
    }
    

    其中NinjectHelper是从中获取内核的静态助手类。

        3
  •  5
  •   Ruben Bartelink    13 年前

    Membership.Provider 实例是在Ninject可以实例化它们之前创建的,您需要对对象执行创建后激活。如果你用 [Inject] 对于provider类中的属性,可以调用 kernel.Inject(Membership.Provider) -这将为您的属性分配所有依赖项。

        4
  •  0
  •   Ruben Bartelink    13 年前

    我从来没用过Ninject。

    expression.For<MembershipProvider>().Add(System.Web.Security.Membership.Provider);
    

    而且效果很好。