Castle Windsor 3.0, службы и множественная реализация

Прочитав и погуглив до изнеможения, я чувствую, что мне может понадобиться какое-то руководство.

Частично это может быть связано с появлением Castle Windsor 3.0, однако большинство сообщений в блогах, вопросов SO и другой документации явно зависят от того, что, как я вижу, сейчас является устаревшим кодом.

Итак, :Проблема?

В моем приложении, которое является службой WCF, предоставляющей серверный код для приложения MVC3, у меня есть несколько уровней, один из которых предоставляет службы сканирования на вирусы для системы загрузки файлов.

Клиент запросил поддержку нескольких служб сканирования, естественно, я согласился, и каждая служба сканирования реализует интерфейс IScanService, таким образом:

public interface IScanService
{
    void Execute();
    ScanResult GetResult();
}

Итак, в службе WCf, где конструктор может выглядеть так:

public McAfeeFileScanService(IScanService mcAfeeScanService)
    {
        _scanService = scanService;
    }

Как я могу специализироваться что внедренный IScanService относится к типу реализации McAfeeScanService, NortonScanService или другой реализации?

AFAIK Windsor по умолчанию предоставляет первую зарегистрированную реализацию, независимо от того, относится ли она к типу McAfeeScanService или нет.

Я просматривал ServiceOverrides, однако в Windsor 3.0 он, похоже, устарел в пользу DependsOn (Dependency.OnComponent ())[но мне не удалось найти подходящих примеров] Я также изучал типизированную фабрику средств и в IHandlerSelector, но чувствую, что для этой (кажущейся распространенной и, возможно, простой )задачи требуется некоторое руководство.

Всем спасибо.

5
задан M05Pr1mty 21 April 2012 в 20:14
поделиться