3

現在、WebApiコントローラーも含むMVCアプリケーションがあります。

MVCとWebApiの両方のサービス依存関係を処理するデフォルトの規則を使用して初期化するようにStructureMapを設定しました。これはすべて完璧に機能します。

ただし、WebApi用に注入する必要がある認証サービスの依存関係が1つあり、MVC用に別の実装があります。StructureMapには同じ初期化ブートストラップコードがあるので、着信するリクエストがWebApiエンドポイントであるかMvcコントローラーエンドポイントであるかに応じて切り替えるにはどうすればよいですか?

4

1 に答える 1

1

これがこれを達成するための最良の方法かどうかはわかりませんが、ObjectFactory.Configureメソッドを使用して起動時に初期化レジストリをオーバーライドしますが、これはMvcのDependencyResolver.SetResolverおよびWebApiのGlobalConfiguration.Configuration.ServiceResolverの各SetResolver内で行います。 SetResolver。

例えば

 ObjectFactory.Configure(x => x.For<IAuthenticationService>() 
                        .Use(s => s.GetInstance<IMvcAuthenticationService>()));

 ObjectFactory.Configure(x => x.For<IAuthenticationService>() 
                        .Use(s => s.GetInstance<IWebApiAuthenticationService>()));
于 2012-05-10T14:37:45.447 に答える