0

我想了解Unity IoC如何在我的Web應用程序中工作。我使用visual studio 2015項目模板創建了一個mvc & api應用程序。UnityWebActivator.start()如何在asp.net應用程序中調用

使用NuGet我安裝了Unity。修改Unity配置以註冊我想要注入的類型。我最初將UnityWebActivator.start()添加到我的global.asax文件中,認爲它必須在啓動時存在,但是當我將其註釋掉時,一切仍然有效。

如何調用UnityWebActivator以配置新的IoC容器以實現統一?

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(); 
    } 
} 
} 

回答

0

WebActivatorEx.PreApplicationStartMethod在應用程序初始化期間提前調用start方法。您會注意到應用程序結束時還會調用一個關閉方法。

+0

謝謝,即時通訊新的.net和還沒有學習的細節。我認爲這些電話可能是它,但想要一些確認! – Mike

+0

這是規則的例外。大多數時候應用程序都有一個標準的起點,但WebActivatorEx是一個特殊情況,我從來沒有見過它的用處。通常對於依賴注入,但我記得看到其他東西使用它。 – CubeRoot

相關問題