筆記用
1.建立專案
2.設定專案
3.按下OK後,會出現下圖
4.開啟【Package Manage Console】
5.開啟後,出現下圖
6.安裝套件
Install-Package Unity -Version 4.0.1
Install-Package Unity.Interception -Version 4.0.1
Install-Package Unity.Mvc -Version 4.0.1
7.新增UnityConfig.vb、UnityMvcActivator.vb 2個檔案於 \\App_Start\
UnityConfig.vb
Imports System
Imports Microsoft.Practices.Unity
Imports Microsoft.Practices.Unity.Configuration
Imports Microsoft.Practices.Unity.InterceptionExtension
Imports Microsoft.Practices.ServiceLocation
Imports System.Reflection
''' <summary>
''' Specifies the Unity configuration for the main container.
''' </summary>
Public Class UnityConfig
#Region "Unity Container"
Private Shared ReadOnly _Container As Lazy(Of IUnityContainer) = New Lazy(Of IUnityContainer)(
Function()
Dim container = New UnityContainer()
'Unityの設定を読み込む
container.LoadConfiguration(containerName)
'ServiceLoacatorにUnityを登録する
Dim service As New UnityServiceLocator(container)
ServiceLocator.SetLocatorProvider(Function() service)
RegisterTypes(container)
Return container
End Function)
''' <summary>
''' Gets the configured Unity container.
''' </summary>
Public Shared Function GetConfiguredContainer() As IUnityContainer
Return _Container.Value
End Function
#End Region
''' <summary>Registers the type mappings with the Unity container.</summary>
''' <param name="container">The unity container to configure.</param>
''' <remarks>There is no need to register concrete types such as controllers or API controllers (unless you want to
''' change the defaults), as Unity allows resolving a concrete type even if it was not previously registered.</remarks>
Public Shared Sub RegisterTypes(container As IUnityContainer)
End Sub
End Class
UnityMvcActivator.vb
Imports System.Linq
Imports System.Web.Mvc
Imports Microsoft.Practices.Unity.Mvc
Imports Microsoft.Web.Infrastructure.DynamicModuleHelper
<Assembly: WebActivatorEx.PreApplicationStartMethod(GetType(UnityMvcActivator), "Start")>
<Assembly: WebActivatorEx.ApplicationShutdownMethod(GetType(UnityMvcActivator), "Shutdown")>
''' <summary>Provides the bootstrapping for integrating Unity with ASP.NET MVC.</summary>
Public NotInheritable Class UnityMvcActivator
''' <summary>
''' This is static class.
''' </summary>
Private Sub New()
End Sub
''' <summary>
''' Integrates Unity when the application starts.
''' </summary>
Public Shared Sub Start()
Dim container = UnityConfig.GetConfiguredContainer()
FilterProviders.Providers.Remove(FilterProviders.Providers.OfType(Of FilterAttributeFilterProvider)().First())
FilterProviders.Providers.Add(New UnityFilterAttributeFilterProvider(container))
DependencyResolver.SetResolver(New UnityDependencyResolver(container))
DynamicModuleUtility.RegisterModule(GetType(UnityPerRequestHttpModule))
End Sub
''' <summary>
''' Disposes the Unity container when the application is shut down.
''' </summary>
Public Shared Sub Shutdown()
Dim container = UnityConfig.GetConfiguredContainer()
container.Dispose()
End Sub
End Class
8.添加 System.Runtime.Version=4.0.0.0 Culture=neutral
9.Web.config檔中添加
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration" />
<unity configSource="Unity.Local.config" />
10.添加Unity.Local.config
Unity.Local.config
<!--unity-->
<unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
<!--Interception設定ファイル用-->
<sectionExtension type="Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionConfigurationExtension,Microsoft.Practices.Unity.Interception.Configuration" />
<namespace name="專安名稱" />
<namespace name="專安名稱.Services" />
<assembly name="專安名稱" />
<container>
<extension type="Interception" />
<register type="System.Collections.Generic.IList`1[string]"
mapTo="System.Collections.Generic.List`1[string]"
name="CreateTypeListA">
<constructor>
</constructor>
<method name="AddRange">
<param name="collection" >
<array type="string[]">
<value value="値2"/>
<value value="値1"/>
</array>
</param>
</method>
</register>
</container>
</unity>
10 測試
HomeController.vb中添加
Dim lt As IList(Of String) = ServiceLocator.Current.GetInstance(Of IList(Of String))("CreateTypeListA")
11.出現下圖即完成