仅为特定组件提供接口依赖性的特定实现

时间:2011-09-29 16:39:33

标签: castle-windsor

我在BooCustom上实现了Decorator模式

public class BooDefault : IBoo{}
public class BooCustom : IBoo
{
    public BooCustom(IBoo boo)
    {
    }
}

比我有一个组件Foo

public class Foo : IFoo
{
    public Foo(IBoo boo)
    {
    }
}

取决于IBoo,只有这一点我需要BooCustom作为IBoo的实现。

依赖于IBoo但Foo的任何组件都将使用包括BooCustom在内的BooDefault。

只有Foo需要通过BooCustom而不是BooDefault来解决他的IBoo依赖。

如何使用windsor完成此分辨率?

Component.For<IFoo>().ImplementedBy<Foo>()
    .Supply_BooCustom_as_Concrete_for_IBoo - Foo Dependency

1 个答案:

答案 0 :(得分:0)

查看Handler Selectors。您应该能够创建一个检查请求IBoo的类型是否为Foo。如果是这样,它可以返回一个特定的组件(在这种情况下,BooCustom)。