Как связывание выполняется с декораторами, использующими Ninject? - PullRequest
9 голосов
/ 09 декабря 2011

Исходя из этого вопроса: Должны ли эти виды услуг вводиться в базовом классе? (по сравнению со статическими классами) .

Как связывание будет сделано с декораторами, использующими 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 Ответ

15 голосов
/ 10 декабря 2011

Вы должны использовать условные привязки, например,

Bind<IRepository>().To<Repository>().WhenInjectedInto<CachedRopsitory>();
Bind<IRepository>().To<CachedRepository>().WhenInjectedInto<CachedLoggedRepository>();
Bind<IRepository>().To<CachedLoggedRepository>();
...