Como injetar UserManager e SignInManager
Estou tentando descobrir como injetar UserManager e SignInManager. Instalei o Ninject no meu aplicativo e estou usando-o da seguinte maneira:
Por favor, considere que este é um projeto totalmente novo. Dentro do Startup.cs, tenho o seguinte:
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
app.UseNinjectMiddleware(CreateKernel);
}
private static IKernel CreateKernel()
{
var kernel = new StandardKernel();
kernel.Load(Assembly.GetExecutingAssembly());
return kernel;
}
}
Agora, se eu fosse criar alguma classe Dummy e tentar injetá-la com base em sua interface que funciona. Eu testei. O que estou tentando descobrir é como eu retiraria o seguinte do Startup.Auth.cs e o injetaria. Não tendo interfaces nas quais posso confiar, não tenho certeza de como isso é feito:
app.CreatePerOwinContext(ApplicationDbContext.Create);
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);
Apenas para esclarecer mais uma vez, minha pergunta é: Como instanciar ApplicationUserManager e ApplicationSignInManager e injetar nos parâmetros do meu controlador. Aqui está o controlador no qual estou tentando injetar isso:
public AccountController(ApplicationUserManager userManager, ApplicationSignInManager signInManager)
{
UserManager = userManager;
SignInManager = signInManager;
}
EDITAR:
Aqui está o que eu tentei:
private static IKernel CreateKernel()
{
var kernel = new StandardKernel();
kernel.Load(Assembly.GetExecutingAssembly());
kernel.Bind<IUserStore<ApplicationUser>>().To<UserStore<ApplicationUser>>();
kernel.Bind<UserManager<ApplicationUser>>().ToSelf();
return kernel;
}
Mas com isso eu recebo erro de referência nulo