Delen via


Procedure: Query's uitvoeren op de metagegevens van een assembly met weerspiegeling (LINQ) (Visual Basic)

In het volgende voorbeeld ziet u hoe LINQ kan worden gebruikt met weerspiegeling om specifieke metagegevens op te halen over methoden die overeenkomen met een opgegeven zoekcriterium. In dit geval vindt de query de namen van alle methoden in de assembly die opsommingsbare typen, zoals matrices, retourneren.

Opmerking

Imports System.Linq
Imports System.Reflection  

Module Module1  
    Sub Main()  
        Dim asmbly As Assembly =
            Assembly.Load("System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken= b77a5c561934e089")  
  
        Dim pubTypesQuery = From type In asmbly.GetTypes()
                            Where type.IsPublic
                            From method In type.GetMethods()
                            Where method.ReturnType.IsArray = True
                            Let name = method.ToString()
                            Let typeName = type.ToString()
                            Group name By typeName Into methodNames = Group  
  
        Console.WriteLine("Getting ready to iterate")  
        For Each item In pubTypesQuery  
            Console.WriteLine(item.methodNames)  
  
            For Each type In item.methodNames  
                Console.WriteLine(" " & type)  
            Next  
        Next  
        Console.WriteLine("Press any key to exit... ")  
        Console.ReadKey()  
    End Sub  
End Module  

In het voorbeeld wordt de Assembly.GetTypes methode gebruikt om een matrix met typen in de opgegeven assembly te retourneren. Het where-componentfilter wordt toegepast zodat alleen openbare typen worden geretourneerd. Voor elk openbaar type wordt een subquery gegenereerd met behulp van de MethodInfo matrix die wordt geretourneerd door de Type.GetMethods aanroep. Deze resultaten worden gefilterd om alleen de methoden te retourneren waarvan het retourtype een matrix is of een ander type dat wordt geïmplementeerd IEnumerable<T>. Ten slotte worden deze resultaten gegroepeerd met behulp van de typenaam als sleutel.

Zie ook