Anvisningar: Fråga efter en sammansättnings metadata med reflektion (LINQ) (Visual Basic)
I följande exempel visas hur LINQ kan användas med reflektion för att hämta specifika metadata om metoder som matchar ett angivet sökvillkor. I det här fallet hittar frågan namnen på alla metoder i sammansättningen som returnerar uppräkningsbara typer, till exempel matriser.
Exempel
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
I exemplet används Assembly.GetTypes metoden för att returnera en matris med typer i den angivna sammansättningen. Filtret Where Clause tillämpas så att endast offentliga typer returneras. För varje offentlig typ genereras en underfråga med hjälp av matrisen MethodInfo som returneras från anropet Type.GetMethods . Dessa resultat filtreras för att endast returnera de metoder vars returtyp är en matris eller en annan typ som implementerar IEnumerable<T>. Slutligen grupperas dessa resultat med hjälp av typnamnet som en nyckel.