0
CastleWindsor를 사용하면 구현이 여러 개인 하나의 인터페이스에 대해 여러 라이프 사이클을 구성 할 수 있습니까?하나 이상의 구현이있는 하나의 인터페이스에 대한 복수 라이프 사이클
IFoo
FooA : IFoo
라이프 사이클 : 싱글 라이프 사이클
FooB : IFoo
자세한 맥락없이
CastleWindsor를 사용하면 구현이 여러 개인 하나의 인터페이스에 대해 여러 라이프 사이클을 구성 할 수 있습니까?하나 이상의 구현이있는 하나의 인터페이스에 대한 복수 라이프 사이클
IFoo
FooA : IFoo
라이프 사이클 : 싱글 라이프 사이클
FooB : IFoo
자세한 맥락없이
과도 나의 가장 좋은 대답은 다음과 같습니다
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
및 01에 따라 다릅니다.이고 이것을 일시적으로 등록하면 IFoo
으로 확인할 수 있습니다.
container.AddFacility<FactorySupportFacility>();
container.Register(Component.For<IFoo>()
.UsingFactoryMethod(() =>
{
return condition
? container.Resolve<FooA>()
: container.Resolve<FooB>();
})
.LifeStyle.Transient);
당신이 더 구체적 일 수 있습니다
또 다른 옵션은 올바른 구현을 반환 대리인 공장을 등록하는 것입니다? 그것은 현재 당신이 성취하고자하는 것에 대해 다소 모호합니다. – Steven
그게 좋지만 충분하지는 않습니다. 어떻게 그들을 해결/주사하고 싶니? IFoo를 주입하고 싶습니까? 그렇다면 언제 'FooA'를 사용해야하고 언제 'FooB'를 사용해야합니까? – Steven
그럼 근본적인 질문은 무엇입니까? 왜 이걸 물어 보는거야? – kko