1

コントローラーの種類に基づいて、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");
4

1 に答える 1

1

NetworkController常に で動作する必要がある場合は、 ではなく にNetworkLogger依存する必要があります。または、必要に応じてオンにすることもできます。NetworkLoggerIAppLoggerINetworkLogger

についても同様ですFileController

于 2012-05-21T13:49:26.267 に答える