0

我使用 Ninject 在我的项目中设置了 DI。这是 UserController 的示例。

private readonly IRoleRepository roleRepository;
private readonly IUserRepository userRepository;

public UserController(IUserRepository userRepository, IRoleRepository roleRepository)
{
    this.roleRepository = roleRepository;
    this.userRepository = userRepository;
}

在我的 NinjectWebCommon.cs 文件中,我有这个:

private static void RegisterServices(IKernel kernel)
{
    kernel.Bind<IControllerFactory>().To<DefaultControllerFactory>();
    kernel.Bind<IUnitOfWork>().To<PortalContext>().InSingletonScope();
    kernel.Bind<IUserRepository>().To<UserRepository>();
    kernel.Bind<IRoleRepository>().To<RoleRepositoroy>();
}    

但是,我似乎无法弄清楚如何将用户和角色存储库注入自定义成员资格提供程序。非常感谢任何帮助,因为我在这里碰壁了。我将 Asp.net MVC4 和 EF4 与存储库和工作单元模式一起使用。谢谢。

4

3 回答 3

0

您可以使用属性注入

[Inject]
public IUserRepository userRepository {get;set;};

但是,您必须小心 DBContext 的范围,因为 MembershipProvider 类是一个单例,其范围是应用程序的生命周期。

于 2012-06-07T15:28:06.190 回答
0

作为一个简单的解决方案,您可以使用 Ninject 对它们进行属性注入。

[Inject]
public IUserRepository UserRepository {get;set;}
于 2012-06-07T15:28:18.877 回答
0

@feanz,关于你的问题:

@BBauer42 奇怪。您的 MVC 应用程序是另一个项目中的提供者吗?

如果自定义提供程序位于单独的项目(类库)中,您需要做些什么不同的事情?

于 2014-01-27T05:02:34.833 回答