Предоставить конкретную реализацию для зависимости интерфейса только для конкретного компонента - PullRequest
0 голосов
/ 29 сентября 2011

Я реализовал шаблон Decorator на BooCustom

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 будет использовать BooDefault, включая BooCustom.

Только Foo должен разрешать свою зависимость IBoo с помощью BooCustom вместо BooDefault.

Как мне выполнить это разрешение с помощью windsor?

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

1 Ответ

0 голосов
/ 07 октября 2011

Просмотр Переключатели обработчиков . Вы должны быть в состоянии создать тот, который проверяет, является ли тип, запрашивающий IBoo, Foo. Если это так, он может вернуть определенный компонент (в данном случае BooCustom).

...