Microsoft UnityをIoCコンテナとして使用して新しいASP.Net Web APIプロジェクトを作成しています。私はちょっと混乱して、どちらが正しいのか分かりません。System.Web.Http.HttpConfigurationのDependencyResolverとSystem.Web.MvcのDependencyResolver
DependencyResolver
をSystem.Web.Http.HttpConfiguration
に設定すると、その後、依存関係を持つAPIコントローラを呼び出すことができ、依存関係はUnityフレームワークによって解決されています。しかし、HomeController
のようなMVCコントローラの場合、DependencyResolver
をSystem.Web.Mvc
に設定するまで、Unityは依存性を注入できません。
APIコントローラの依存関係は解決されましたが、MVCコントローラの依存関係は解決されません。以下のコードを追加した場合:
public class IocConfig
{
public static void Register(HttpConfiguration config)
{
var container = UnityConfig.GetConfiguredContainer();
FilterProviders.Providers.Remove(FilterProviders.Providers.OfType<FilterAttributeFilterProvider>().First());
FilterProviders.Providers.Add(new UnityFilterAttributeFilterProvider(container));
config.DependencyResolver = new UnityResolver(container);
//DependencyResolver.SetResolver(new UnityDependencyResolver(container));
}
}
MVCコントローラの依存関係は正常に解決されましたが、APIコントローラの依存関係は解決されません。私は:(ラインをアンコメント以下のコードを追加した場合)
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
ちょうどあなたがプロジェクトテンプレートは、ASP.NetのWeb APIであることを知っていると私はMicrosoft.Unityを使用しています。
DependencyResolver
のいずれかを設定する必要がありますか、何か間違っていますか?
のために使用される名前空間は、あなたが両方設定します。 –