2014-09-21 4 views
0

настоящее время я читаю контроллеры от узла с нижеОпределить MethodInfo, который имеет HttpPost() атрибут

Public Shared Function GetControllers() As List(Of Type) 
    ' Go through all assemblies referenced by the application and search for 
    ' controllers and controller factories. 

    Dim controllerTypes As New List(Of Type)() 
    Dim Assemblies = AppDomain.CurrentDomain.GetAssemblies 
    For Each assembly As Reflection.Assembly In Assemblies 
     Dim typesInAsm As Type() 
     Try 
      typesInAsm = assembly.GetTypes() 
     Catch ex As Reflection.ReflectionTypeLoadException 
      typesInAsm = ex.Types 
     End Try 
     controllerTypes.AddRange(typesInAsm.Where(AddressOf IsControllerType)) 
    Next 
    Return controllerTypes 
End Function 

Затем список, который я только заселена используется, чтобы прочитать все действия теперь я пытаюсь отфильтруйте те, которые имеют HTTPPost.

Public Shared Sub GetActionMethods(Controllers As List(Of Type)) 
    For Each y In Controllers 
     Dim selector = New ActionMethodSelector(y) 

     Dim allValidMethods As New List(Of Reflection.MethodInfo)() 
     allValidMethods.AddRange(selector.AliasedMethods) 
     allValidMethods.AddRange(selector.NonAliasedMethods.SelectMany(Function(g) g)) 

     Dim z = allValidMethods.ToArray() 
    Next 
End Sub 

Дело в том, что я не знаю, как настроить, где это сделать через linq. Я пробовал различные методы, но всегда получаю пустой список.

Dim k = (From o As Reflection.MethodInfo In allValidMethods 
     Select o).ToArray 

ответ

0

Я смог найти свое решение на другом веб-сайте и дать кредит. Я отправлю эту ссылку.

Using LINQ with System.Reflection Classes

Мой код находится здесь под

Dim k = (From o As Reflection.MethodInfo In allValidMethods 
     Where o.GetCustomAttributes(GetType(HttpPostAttribute), True).Length > 0 
     Select o).ToArray 
Смежные вопросы