Castle Windsor 3.2 では、コンテキスト パラメータに応じて、その場でサービスの実装を解決する必要があります。これが私がやりたいことの基本的な例です:
私はサービスIFooを持っています
public interface IFoo
{
object GetSomething();
}
2 つの異なるクラス Foo1 と Foo2 によって実装されます
public class FooBase
{
public int Number {get; private set;}
public FooBase(int number)
{
Number = number;
}
}
public class Foo1 : IFoo
{
public Foo1(int number):base(number)
public object GetSomething()
{
return "Foo1";
}
}
public class Foo2 : IFoo
{
public Foo2(int number):base(number)
public object GetSomething()
{
return "Foo2";
}
}
数値をパラメーターとして城のウィンザー解決メソッドを呼び出し、数値に応じて Foo1 または Foo2 オブジェクトを取得したい:
var foo1 = container.Resolve<IFoo>(new {number= 1});
// foo1 is Foo1
var foo2 = container.Resolve<IFoo>(new {number= 2});
// foo2 is Foo2
考えられる解決策をいくつか試しましたが、Castle Windsor のドキュメントと例が不足していて、ほとんどの例が最新ではなく、廃止された API を使用しているため、本当に混乱しています。
したがって、次の概念を使用した例を見てきましたが、どれも私の要件にあまり合っていないようです。
- HandlerSelector
- 型式 工場設備
- UsingFactoryMethod