私は自分のリゾルバパターンの実装でCastle Windsorを使用しています。サービスの実装が2つあります。MethodAService
とMethodBService
の両方にIMethodService
が実装されています。ウィンザーをブートストラップするときに "Convention Over Over Configuration"を使用しています。Castle Windsorに常にMethodAService
(Debug、Releaseなど)を使用するように指示することはできますが、もう一方はMethodBService
を使用します。あなたの時間をありがとう!ここで城ウィンザーの設定はビルドファイルまたは設定ファイルに基づいています
0
A
答えて
2
はIHandlerSelector
を使用して、それを行うための一つの方法です:
public class DebugHandlerSelector: IHandlerSelector {
private readonly Type serviceType;
private readonly Type debugImplementation;
private readonly Type releaseImplementation;
public DebugHandlerSelector(Type serviceType, Type debugImplementation, Type releaseImplementation) {
this.serviceType = serviceType;
this.debugImplementation = debugImplementation;
this.releaseImplementation = releaseImplementation;
}
public bool HasOpinionAbout(string key, Type service) {
return service == serviceType;
}
public IHandler SelectHandler(string key, Type service, IHandler[] handlers) {
return handlers.First(h => h.ComponentModel.Implementation ==
#if DEBUG
debugImplementation
#else
releaseImplementation
#endif
);
}
}
使用例:ウィンザーよくある質問に追加
container.Kernel.AddHandlerSelector(new DebugHandlerSelector(typeof(IMethodService), typeof(MethodAService), typeof(MethodBService)));
+1
これをIHandlerSelectorに依存しないようにするにはどうすればよいですか? –
+0
それとも城ウィンザーでどうですか? –
+0
私は実際にこれを本当に好きです。コンストラクタ呼び出しで3つのtypeofの代わりにGenericsを使用するようにリファクタリングしました。 –
関連する問題
- 1. 城ウィンザーをMVCに設定
- 2. GYP変数はビルド設定に基づいています
- 3. ユーザー設定に基づいてFullCalendarのデフォルトビューを設定する
- 4. 複数のプロジェクトと単体テストでの城ウィンザーの設定
- 5. コマンドラインパラメータに基づいて値をtrueまたはfalseに設定します。
- 6. TableView:rowName設定変数に基づいて
- 7. Jenkins:グローバルツール設定 - エージェントに基づいて設定が異なります
- 8. OpenMPはランタイム・パラメータに基づいてチャンクの固定サイズを設定します
- 9. .NETコアのロード設定は公開プロファイルに基づいて正しく設定されています
- 10. Express:パス/ファイルに基づいてコンテンツタイプを設定していますか?
- 11. premake5プラットフォーム+設定に基づいてoutdirを設定する方法は?
- 12. Idに基づいてループを設定したクラスを設定する
- 13. if文に基づいてグリッドビューのイメージを設定します
- 14. キーに基づいてコレラポーズの色を設定します
- 15. デフォルトのドロップダウンデフュルト値をビューバックに基づいて設定します
- 16. getView()メソッドのデータに基づいてイメージを設定します。
- 17. Androidデバイスのロケールは言語設定のみに基づいていますか?
- 18. 選択に基づいてランダムにアイコンを設定します
- 19. テキストフィールドに基づいてラジオボタンを動的に設定します。
- 20. タイマーまたはカウント変数に基づいてラクダルートを設定する
- 21. フィールド値に基づいてキーストーンリスト "noedit"を設定しますか?
- 22. WPFデータトリガイベントに基づいてオブジェクトプロパティを設定します。
- 23. 条件に基づいてJavascriptで色を設定します
- 24. SharedPreferencesに基づいてOnClickListenersを設定します。
- 25. プロパティ値に基づいてアイコンを設定しますか?
- 26. Javaの設定ファイルの値に基づいてメソッド名を作成します
- 27. チェックボックスに基づいてループを設定するには
- 28. は、コンテナの幅に基づいて、私は0.75を乗じた幅に基づいて、コンテナの高さを設定しようとしています定数
- 29. current_userに基づいてデフォルト値を設定する方法は?
- 30. バッテリーの寿命は音量設定に基づいて
が質問:http://using.castleproject.org/display/IoC/FAQ –