0
A
回答
0
沒有更多的情況下,我最好的答案是:使用代理:
public class FooProxy : IFoo
{
private readonly FooA a;
private readonly FooB b;
public FooProxy(FooA a, FooB b)
{
this.a = a;
this.b = b;
}
void IFoo.SomeFooMethod()
{
this.GetFooBasedOnSomeCondition().SomeFooMethod();
}
private IFoo GetFooBasedOnSomeCondition()
{
return condition ? this.a : this.b;
}
}
這個代理類取決於FooA
和FooB
,您可以將其註冊爲瞬態,以解析爲IFoo
。
另一個選項是註冊一個委託工廠,返回正確實施:
container.AddFacility<FactorySupportFacility>();
container.Register(Component.For<IFoo>()
.UsingFactoryMethod(() =>
{
return condition
? container.Resolve<FooA>()
: container.Resolve<FooB>();
})
.LifeStyle.Transient);
相關問題
- 1. Hibernate將接口映射爲具有多個實現的實體
- 2. Maven:多個插件調用多個生命週期
- 3. Laravel 4同時有多個實現的一個接口
- 4. 如何實現一個具有多個獨立公共接口的案例類?
- 5. 實現多個具有相同方法的接口
- 6. 週期檢測含有多個週期
- 7. 派生類實現具有通用函數簽名的多個接口
- 8. 多個並行接口的實現
- 9. 春天autowire接口的多個實現
- 10. 使用實現多個接口的coclass
- 11. Castle Windsor - 接口的多個實現
- 12. 生命週期錯誤 - 未實現正確的接口javax.portlet.filter.PortletFilter
- 13. 數據生成:生成一個具有多個日期約束的實體
- 14. Flyway:如何支持清理具有相同生命週期的多個模式?
- 15. Type類的一個實現多個接口
- 16. 如何記錄一個實現多個接口的類?
- 17. 爲什麼有時會調用多個JSF生命週期?
- 18. 一個進程的生命週期ios
- 19. 實現只有一個類或更多類的接口
- 20. 在C#中實現多個接口
- 21. 指針類,實現多個接口
- 22. 允許實現多少個接口?
- 23. 如何嘲笑實現多個接口
- 24. 如何聲明實現多個接口
- 25. 實現多個通用接口
- 26. 具有多個定義的接口C#
- 27. 構建一個MySQL以確定具有相同值的多個身份的「生命週期的長度」
- 28. 一個或多個接口?
- 29. 一個類可以在PHP中實現多少個接口?
- 30. 在Eclipse中爲多個類實現一個接口Java
你能更具體?目前你試圖達到的目標有點模糊。 – Steven
這樣比較好,但還不夠。你想如何解決/注入他們?你想給他們注入一個「IFoo」嗎?如果是這樣,什麼時候應該使用'FooA',何時使用'FooB'? – Steven
那麼底層的問題是什麼?你爲什麼問這個? – kko