Как связывание выполняется с декораторами, использующими Ninject?
Основываясь на этом вопросе: должны ли эти виды услуг вводиться в базовом классе? (по сравнению со статическими классами).
Как связывание будет сделано с декораторами, использующими Ninject? или какой-нибудь DIContainer?
public class CachedLoggedRepository : IRepository
{
public IRepository repository { get; set; }
void Add();
}
public class CachedRepository : IRepository
{
public IRepository repository { get; set; }
void Add();
}
public class Repository : IRepository
{
void Add();
}
1 ответ
Решение
Вы должны использовать условные привязки, например
Bind<IRepository>().To<Repository>().WhenInjectedInto<CachedRopsitory>();
Bind<IRepository>().To<CachedRepository>().WhenInjectedInto<CachedLoggedRepository>();
Bind<IRepository>().To<CachedLoggedRepository>();