使用 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。
因此,我看到了一些使用以下概念的示例,但它们似乎都不是我的要求:
- 处理程序选择器
- 类型化工厂设施
- 使用工厂方法