Dot-Net
使用裝飾器模式的 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) { } }現在,我需要完成綁定。在應用程序中,我需要 TrickyRepository 的實例,以使用 MoreAdvancedRespository 進行初始化。所以,我需要寫一些類似的東西:
Bind<IRepository>().To<TrickyRepository>.With ??在這裡我很困惑,我需要以某種方式說,採用 MoreAdvancedRespository 但使用 SomeSimpleRepository 對其進行初始化。這是一種依賴關係鏈,必須針對一個介面進行解析。
有人對此有建議嗎?
使用
WhenInjectedInto:Bind<IRepository>().To<MoreAdvancedRespository> .WhenInjectedInto<TrickyRepository>(); Bind<IRepository>().To<SomeSimpleRepository> .WhenInjectedInto<MoreAdvancedRespository>();有關更多資訊,請參閱此部落格文章。