从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()