【问题标题】:Ninject dependency injection with Decorator patternNinject 依赖注入与装饰器模式
【发布时间】:2012-01-18 13:01:11
【问题描述】:

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

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) 
    { }
}

现在,我需要完成绑定。在应用程序中,我需要 TrickyRepository 的实例,以使用 MoreAdvancedRespository 进行初始化。所以,我需要写这样的东西:

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

在这里我很困惑,我需要以某种方式说,采用 MoreAdvancedRespository 但使用 SomeSimpleRepository 对其进行初始化。这是一种依赖关系链,必须针对一个接口进行解析。

有人对此有什么建议吗?

【问题讨论】:

标签: .net inversion-of-control ninject decorator


【解决方案1】:

使用WhenInjectedInto:

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

请参阅this blog post 了解更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    • 1970-01-01
    • 2016-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多