How the binding are done with decorators using Nin

2019-01-11 20:27发布

问题:

Based on this question : Should thoses kind of service go injected in a base class ? (versus static classes).

How the binding would be done with decorators using Ninject ? or any 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:

You have to use conditional bindings e.g

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