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.