Próbuję użyć UserManager w klasie, ale ja dostaję ten błąd:Jak wstrzykiwać klasy tożsamości za pomocą programu Ninject?
Error activating IUserStore{ApplicationUser}
No matching bindings are available, and the type is not self-bindable.
używam domyślnego Startup.cs określający jedno wystąpienie na życzenie:
app.CreatePerOwinContext(ApplicationDbContext.Create);
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
jestem w stanie uzyskać instancję ApplicationDbContext, która moim zdaniem jest coraz wstrzykiwany przez Owin (Czy to prawda?):
public class GenericRepository<T> : IGenericRepository<T> where T : class
{
private ApplicationDbContext context;
public GenericRepository(ApplicationDbContext context)
{
this.context = context;
}
}
Ale nie mogę zrobić to samo z UserManage r (to wyrzuca błąd pokazany wcześniej):
public class AnunciosService : IAnunciosService
{
private IGenericRepository<Anuncio> _repo;
private ApplicationUserManager _userManager;
public AnunciosService(IRepositorioGenerico<Anuncio> repo, ApplicationUserManager userManager)
{
_repo = repo;
_userManager = userManager;
}
}
Kontroler wykorzystuje UserManager tak:
public ApplicationUserManager UserManager
{
get
{
return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
}
private set
{
_userManager = value;
}
}
Używam ninject wstrzyknąć moich innych klas, ale jak mogę wstrzyknąć UserManager z jego zależnościami i unikać używania tego w moich kontrolerach?
Nicea rozwiązanie. Działa również po mojej stronie. Dzięki. –
Bardzo pomocne, dziękuję. Powinieneś iść dalej i zaakceptować to jako odpowiedź, mimo że odpowiedziałeś na własne pytanie. –
Czy masz przykład działającego kodu? Walczę z tym od kilku tygodni i nie mogę tego zrozumieć. – Bojan