1
我自動註冊實現了同一個接口的多個組件:註冊溫莎組件爲直接使用和作爲一個數組
container.Kernel.Resolver.AddSubResolver(
new ArrayResolver(container.Kernel));
container.Register(AllTypes.FromAssembly(Assembly.GetExecutingAssembly())
.BasedOn<IPaymentPostProcessor>()
.WithService.FromInterface(typeof(IPaymentPostProcessor))
.Configure(c => c.Named(c.Implementation.Name))
.Configure(c => c.LifeStyle.PerWebRequest));
這工作時,我有數組本身的依賴關係:
public class PaymentPostProcessorManager{
public PaymentPostProcessorManager(IPaymentPostProcessor[] processors){}
}
但沒有,如果我有實現接口的特定組件的依賴關係:
public class SpecialService{
public OtherService(SpecificPostProcessor processor){}
}
這會失敗,它表示沒有組件已經爲SpecificPostProcessor註冊。如果我個別註冊了SpecificPostProcessor,那麼數組分辨率最終會包含它兩次。
我該如何做基於接口的自動註冊,並讓它自動註冊爲特定的依賴關係?
哦不,我似乎沒有.Self()作爲選項使用2.1。由於與項目其他部分的衝突,我一直在避免升級一段時間 - 它似乎使用rhino.esb破壞我的代碼。這是唯一的方法嗎? –
我認爲在v2.1中有'WithService.Select(你在這裏做的工作)'' –