WebアプリケーションでUnity IoCがどのように機能するかを理解しようとしています。私はビジュアルスタジオ2015プロジェクトテンプレートを使用してmvc & apiアプリケーションを作成しました。asp.netアプリケーションでUnityWebActivator.start()が呼び出される方法
NuGetを使用してUnityをインストールしました。 Unity設定を変更して、注入したいタイプを登録しました。私はもともとUnity.Activator.start()をglobal.asaxファイルに追加していましたが、起動時にそこにいなければならないと思っていましたが、私がコメントアウトすると、すべてが動作します。
ユニティのために新しいIoCコンテナを設定するためにUnityWebActivatorがどのように呼び出されますか?
using System.Linq;
using System.Web.Mvc;
using Microsoft.Practices.Unity.Mvc;
[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(WebDirectory.App_Start.UnityWebActivator), "Start")]
[assembly: WebActivatorEx.ApplicationShutdownMethod(typeof(WebDirectory.App_Start.UnityWebActivator), "Shutdown")]
namespace WebDirectory.App_Start
{
/// <summary>Provides the bootstrapping for integrating Unity with ASP.NET MVC.</summary>
public static class UnityWebActivator
{
/// <summary>Integrates Unity when the application starts.</summary>
public static void Start()
{
var container = UnityConfig.GetConfiguredContainer();
FilterProviders.Providers.Remove(FilterProviders.Providers.OfType<FilterAttributeFilterProvider>().First());
FilterProviders.Providers.Add(new UnityFilterAttributeFilterProvider(container));
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
// TODO: Uncomment if you want to use PerRequestLifetimeManager
// Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility.RegisterModule(typeof(UnityPerRequestHttpModule));
}
/// <summary>Disposes the Unity container when the application is shut down.</summary>
public static void Shutdown()
{
var container = UnityConfig.GetConfiguredContainer();
container.Dispose();
}
}
}
ありがとう、私はより新しい.netとinsとoutsまだ学んでいない。私はそれらの呼び出しがそれかもしれないと思ったが、いくつかの確認が必要でした! – Mike
ルールの例外です。ほとんどの場合、アプリケーションは標準的な出発点を持っていますが、WebActivatorExは特別なケースです。典型的には依存症の注射のために私はそれを使用する他のものを見て覚えています。 – CubeRoot