使用 ninject 将 UserManager 和 UserStore 注入(inject) Controller 的最优雅的方法是什么?例如,上下文可以这样注入(inject):
kernel.Bind<EmployeeContext>().ToSelf().InRequestScope();
public class EmployeeController : Controller
{
private EmployeeContext _context;
public EmployeeController(EmployeeContext context)
{
_context = context;
}
ninject 可以用一行代码将 UserManager 和 UserStore 注入(inject)到 Controller 中吗?!如果没有,最简单的方法是什么? 我不想用这个:
var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
提前谢谢你。
最佳答案
没问题,您只需要确保所有依赖项都有绑定(bind)(ApplicationDbContext
、UserManager<T>
和 UserStore<T>
)。绑定(bind)开放泛型是这样完成的:
kernel.Bind(typeof(UserStore<>)).ToSelf().InRequestScope(); // scope as necessary.
如果它有一个接口(interface),你会像这样绑定(bind)它:
kernel.Bind(typeof(IUserStore<>)).To(typeof(UserStore<>));
因此,有了这些绑定(bind),您就可以开始了:
kernel.Bind<ApplicationDbContext>().ToSelf().InRequestScope();
kernel.Bind(typeof(UserManager<>)).ToSelf(); // add scoping as necessary
kernel.Bind(typeof(UserStore<>)).ToSelf(); // add scoping as necessary
关于c# - 注入(inject) UserManager 和 UserStore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23968065/