使用Decorator模式的Ninject依赖项注入



比方说,我有这样的类层次结构:

public interface IRepository { }
public class SomeSimpleRepository : IRepository {}

现在我想用的附加功能"装饰"SomeSimpleRepository

public class MoreAdvancedRespository : IRepository 
{ 
    private readonly IRepository _originalRepository;
    public MoreAdvancedRespository(IRepository original) 
    { }
}

过了一会儿,又来了一个。。

public class TrickyRepository : IRepository
{
    private readonly IRepository _originalRepository;
    public TrickyRepository (IRepository original) 
    { }
}

现在,我需要完成绑定。在应用程序中,我需要使用MoreAdvancedRespository初始化TrickyRepository的实例。所以,我需要写一些类似的东西:

Bind<IRepository>().To<TrickyRepository>.With ??

在这里,我很困惑,我需要说,采用MoreAdvancedRespository,但用SomeSimpleRepository初始化它。这是一种依赖关系链,必须针对一个接口来解决。

有人对此有什么建议吗?

使用WhenInjectedInto:

Bind<IRepository>().To<MoreAdvancedRespository>()
                   .WhenInjectedInto<TrickyRepository>();
Bind<IRepository>().To<SomeSimpleRepository>()
                   .WhenInjectedInto<MoreAdvancedRespository>();

查看此博客文章了解更多信息。

最新更新