【发布时间】:2012-04-21 20:14:16
【问题描述】:
阅读和搜索到筋疲力尽的地步,我觉得我可能需要一些指导。
这可能部分是因为引入了 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,但觉得这个(看似常见且可能很简单)任务需要一些指导。
谢谢大家。
【问题讨论】:
标签: c#-4.0 castle-windsor