从MEF容器中获取导出(Lambda表达式)
问题描述:
我想查看控制器类名是否传入控制器名称的名称。我认为我的lambda表达式是错误的,这就是为什么它不能正常工作。我正在传入正确的控制器名称,但导出变量始终为空。从MEF容器中获取导出(Lambda表达式)
Public Function CreateController(requestContext As System.Web.Routing.RequestContext,
controllerName As String)
As System.Web.Mvc.IController Implements
System.Web.Mvc.IControllerFactory.CreateController
Dim controller As IController = Nothing
If controllerName IsNot Nothing Then
Dim controllerClassName As String = controllerName & "Controller"
Dim export As Lazy(Of IController) = Me.container.GetExports(Of IController)().Where(
Function(c)
Return c.Value.GetType.Name = controllerClassName
End Function
).FirstOrDefault()
如果您需要我澄清任何事情,请让我知道!谢谢!
答
是您的lambda表达式是错误的,这应该做的伎俩
Dim export As Lazy(Of IController) = Me.container.GetExports(Of IController)() _
.Where(Function(c) c.Value.GetType.Name = controllerClassName) _
.FirstOrDefault()