私は IoC コンテナーに比較的慣れていないため、無知であることをあらかじめお詫びします。
私のアプリケーションは、Entity Framework とその上にあるリポジトリ レイヤーを使用する asp.net 4.0 MVC アプリです。これはマルチテナント アプリケーションであるため、使用される接続文字列はログインしているクライアントによって異なります。
接続文字列は、クライアントを示すルートの一部として渡される「キー」によって決定されます。このルート データは、ユーザーのセッションの最初の要求にのみ存在します。
ルートは次のようになります: http://{host}/login/dev/
「dev」は、dev データベースを使用していることを示します。
現在、IoC コンテナーはすべての依存関係を global.asax Application_Start イベント ハンドラーに登録しており、次のように「キー」をハードコーディングしています。
var cnString = CommonServices.GetDBConnection("dev");
container.RegisterType<IRequestMgmtRecipientRepository, RequestMgmtRecipientRepository>(
new InjectionConstructor(cnString));
最初に提供されたルート データを使用して、ログインしたクライアントに基づいてリポジトリを動的に登録する Unity の方法はありますか?
注: リポジトリを手動で解決しているわけではありません。コントローラーがインスタンス化されると、コンテナーによって構築されます。私は困惑しています。
ありがとう!