我是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放进去,为什么我会得到例外 尝试抓住?