我正在使用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是系统类,而不是我的。
答案 0 :(得分:3)
经过一番尝试后,我想我找到了一个优雅的解决方案:
kernel.Bind<IUserStore<ApplicationUser>>().To<IUserStore<ApplicationUser>>()
.WithConstructorArgument(kernel.Get<IMongoContext>().GetCollection<ApplicationUser>());