読んでググって疲れ果ててしまったので、ガイダンスが必要な気がします。
これは、Castle Windsor 3.0の導入が原因の一部である可能性がありますが、ブログ投稿、SOの質問、およびその他のドキュメントのほとんどは、現在非推奨のコードであることがわかるものに明示的に依存しています。
だから:問題?
MVC3アプリケーションにバックエンドコードを提供するWCFサービスである私のアプリケーションには、複数のレイヤーがあり、そのうちの1つがファイルアップロードシステムにウイルススキャンサービスを提供します。
クライアントは複数のスキャンサービスのサポートを要求しました。当然、私はこれに準拠し、各スキャンサービスはIScanServiceインターフェイスを実装しています。
public interface IScanService
{
void Execute();
ScanResult GetResult();
}
したがって、WCfサービスでは、コンストラクターは次のようになります。
public McAfeeFileScanService(IScanService mcAfeeScanService)
{
_scanService = scanService;
}
注入されるIScanServiceが実装タイプMcAfeeScanService、NortonScanService、またはその他の実装であることをどのように特殊化できますか?
AFAIK Windsorは、デフォルトで、タイプがMcAfeeScanServiceであるかどうかに関係なく、最初に登録された実装を提供します。
ServiceOverridesを調べていましたが、これはDependsOn(Dependency.OnComponenent())を優先してWindsor 3.0で非推奨になっているようです[ただし、関連する例は見つかりませんでした] TypedFactoryFacilitiesとIHandlerSelectorも調べました。 、しかし、この(一見一般的でおそらく単純な)タスクにはいくつかのガイダンスが必要であると感じています。
皆さんありがとう。