Прочитав и погуглив до изнеможения, я чувствую, что мне может понадобиться какое-то руководство.
Частично это может быть связано с появлением 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, но чувствую, что для этой (кажущейся распространенной и, возможно, простой )задачи требуется некоторое руководство.
Всем спасибо.