コントローラーの種類に基づいて、Unityまたはその他のDIコンテナーを使用して特定の依存関係を注入したいと思います。
以下に例を示します。
2つの依存関係はインターフェースタイプIAppLogger
です:
1. NetworkLogger : IAppLogger
2. FileLogger : IAppLogger
現在、2つ以下のコントローラーは、抽象化IAppLoggerで依存関係を消費します。
1. NetworkController depends on IAppLogger
2. FileController depends on IAppLogger
私のMVCプロジェクトでは、UnityおよびUnity.mvc3パッケージをインストールしました。その後、タイプを登録できるbootstrap.csファイルを取得しました。DependencyResolverを解決するように設定するにはどうすればよいですか
IAppLogger to NetworkLogger for controller NetworkController
と
IAppLogger to FileLogger for controller FileController.
編集:
アプリで物事が動的である場合、各コントローラー内の依存関係タイプを変更することは、サービスロケーターまたはリゾルバーで行うのとは対照的に困難であり、フットプリントが少なくなります。スタンドアロンアプリでは、タイプの登録時にエイリアスを使用してそれを行うことができます。
Container.RegisterType<IAppLogger, NetworkLogger>("Network");
Container.RegisterType<IAppLogger, FileLogger >("File");
IAppLogger flogger = Container.Resolve<IAppLogger>("File");
IAppLogger nlogger = Container.Resolve<IAppLogger>("Network");