使用Ninject

时间:2015-08-17 08:59:40

标签: c# dependency-injection ninject

我正在使用Ninject作为IoC,我正在按照教程将ASP.NET Owin安全默认方法转换为依赖注入模式。

我的数据库上下文,在这种情况下是MongoDB,绑定如下:

kernel.Bind<IMongoContext>().To<MongoContext>().InSingletonScope();

目前,我的安全模块(非依赖注入)是这样的:

var users = MongoContext.Create().GetCollection<ApplicationUser>();
var manager = new ApplicationUserManager(new UserStore<ApplicationUser>(users));

我想像我在Unity分辨率中看到的那样解决UserStore:

container.RegisterType<IUserStore<ApplicationUser>, UserStore<ApplicationUser>>(
        new InjectionConstructor(typeof(ApplicationDbContext)));

好吧,上面的代码使用的是Entity Framework,在我的例子中,它与我的MongoContext类似。

我认为这与

类似
kernel.Bind<IUserStore>.To<UserStore>().WithConstructorArgument(/*some extra option to pass a resolve of my MongoContext*/)

所以我需要知道如何将已解析的MongoContext传递给UserStore绑定。

编辑:IUserStore和UserStore是系统类,而不是我的。

1 个答案:

答案 0 :(得分:3)

经过一番尝试后,我想我找到了一个优雅的解决方案:

kernel.Bind<IUserStore<ApplicationUser>>().To<IUserStore<ApplicationUser>>()
    .WithConstructorArgument(kernel.Get<IMongoContext>().GetCollection<ApplicationUser>());