asp.net mvc 4 IDependencyResolver与Unity

时间:2013-05-20 10:40:04

标签: asp.net-mvc unity-container

我是MVC 4世界的新手(昨天刚刚开始)而且我是 看着DI团结一致。

我正在使用IDependencyResolver来获取/解决依赖关系。

如果我使用此实现,一切正常

Public Class UnityDependencyResolver : Implements IDependencyResolver

    Private _unity As IUnityContainer

    Public Sub New(ByVal icontainer As IUnityContainer)
        _unity = icontainer
    End Sub

    Public Function GetService(serviceType As Type) As Object Implements IDependencyResolver.GetService
        Dim _obj As Object = Nothing

        Try
            _obj = _unity.Resolve(serviceType)
        Catch ex As Exception
        End Try

        Return _obj
    End Function

    Public Function GetServices(serviceType As Type) As IEnumerable(Of Object) Implements IDependencyResolver.GetServices
        Dim _list As List(Of Object) = New List(Of Object)

        If _unity.IsRegistered(serviceType) Then
            _list = _unity.ResolveAll(serviceType)
        End If

        Return _list
    End Function
End Class

但如果我使用它,我会收到异常

Public Class UnityDependencyResolver : Implements IDependencyResolver

    Private _unity As IUnityContainer

    Public Sub New(ByVal icontainer As IUnityContainer)
        _unity = icontainer
    End Sub

    Public Function GetService(serviceType As Type) As Object Implements IDependencyResolver.GetService
        Dim _obj As Object = Nothing

        If _unity.IsRegistered(serviceType) Then
            _obj = _unity.Resolve(serviceType)
        End If

        Return _obj
    End Function

    Public Function GetServices(serviceType As Type) As IEnumerable(Of Object) Implements IDependencyResolver.GetServices
        Dim _list As List(Of Object) = New List(Of Object)

        If _unity.IsRegistered(serviceType) Then
            _list = _unity.ResolveAll(serviceType)
        End If

        Return _list
    End Function
End Class

在Global.asax文件中,我设置了

...
DependencyResolver.SetResolver(New UnityDependencyResolver(unity))

如果我不把_unity.Resolve放进去,为什么我会得到例外 尝试抓住?

0 个答案:

没有答案