Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Das folgende Beispiel zeigt, wie LINQ mit Spiegelung verwendet werden kann, um bestimmte Metadaten zu Methoden abzurufen, die einem angegebenen Suchkriterium entsprechen. In diesem Fall findet die Abfrage die Namen aller Methoden in der Assembly, die aufzählbare Typen wie Arrays zurückgeben.
Beispiel
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
Im Beispiel wird die Assembly.GetTypes Methode verwendet, um ein Array von Typen in der angegebenen Assembly zurückzugeben. Der Where-Klauselfilter wird angewendet, sodass nur öffentliche Typen zurückgegeben werden. Für jeden öffentlichen Typ wird eine Unterabfrage mithilfe des MethodInfo Arrays generiert, das vom Type.GetMethods Aufruf zurückgegeben wird. Diese Ergebnisse werden so gefiltert, dass nur die Methoden zurückgegeben werden, deren Rückgabetyp ein Array ist oder ein anderer Typ, der IEnumerable<T> implementiert. Schließlich werden diese Ergebnisse mithilfe des Typnamens als Schlüssel gruppiert.