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