0

私はMVCコントローラとWebApiコントローラの両方を同じプロジェクトに持っています。私はサービスとロガーをそのコンストラクタを通してコントローラに注入したいと思います。 DependencyResolverは拡張性の適切なポイントですか? MVCコントローラとWebApiコントローラの両方で同じサービスとロガーを共有することはできますか?私はIoCコンテナとしてUnityを使用します。MVC5とWebApi2コントローラで適切なDependency Injectionを行うための一般的なフックアップポイントは何ですか?

+0

はい、MVCとWeb APIの間でサービスを共有できます。 – Win

+1

何を試しましたか?ただそれのために行く。あなたが問題に遭遇した場合、私たちはそれらを手伝うことができますが、このような質問をすると、私たちがあなたに与える唯一の合理的な答えは "はい"です。 –

答えて

3

WebAPIとMVCは完全に独立したフレームワークです。それぞれはDIをサポートしており、(またはSystem.Web.Mvc.IControllerFactory)とSystem.Web.Http.IDependencyResolverの両方を実装した場合、同じプロジェクトで動作するように設計されています。composition root

一般に、ほとんどの主要なDIコンテナには、統合をやや容易にするNuGetパッケージがありますが、使用するコンテナのドキュメントを参照する必要があります。

Here is an article Unityをどのように統合するかについて詳しく説明しています。 Unity.WebApiおよびUnity.Mvc5パッケージをインストールし、次のように構成を追加します。

using Microsoft.Practices.Unity; 
using System.Web.Http; 
using System.Web.Mvc; 

namespace WebApplication1 
{ 
    public static class UnityConfig 
    { 
     public static void RegisterComponents() 
     { 
      var container = new UnityContainer(); 

      // register all your components with the container here 
      // it is NOT necessary to register your controllers 

      // e.g. container.RegisterType<ITestService, TestService>(); 

      DependencyResolver.SetResolver(new Unity.Mvc5.UnityDependencyResolver(container)); 

      GlobalConfiguration.Configuration.DependencyResolver = new Unity.WebApi.UnityDependencyResolver(container); 
     } 
    } 
} 
関連する問題