在阅读和搜索到筋疲力尽的地步后,我觉得我可能需要一些指导。
这可能部分是因为 Castle Windsor 3.0 的引入,但是大多数博客文章、SO 问题和其他文档都明确依赖于我所看到的现在已弃用的代码。
所以:问题?
在我的应用程序中,这是一个为 MVC3 应用程序提供后端代码的 WCF 服务,我有多个层,其中一个为文件上传系统提供病毒扫描服务。
客户要求支持多个扫描服务,我自然答应了,每个扫描服务都实现了一个 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.OnComponenent()) [但我没有找到任何相关示例] 我还研究了类型化工厂设施和 IHandlerSelector ,但觉得这个(看似常见且可能很简单)任务需要一些指导。
谢谢大家。