Porady: wykonywanie zapytań dotyczących metadanych zestawu przy użyciu Emocje ion (LINQ) (Visual Basic)
W poniższym przykładzie pokazano, jak LINQ można używać z odbiciem w celu pobrania określonych metadanych dotyczących metod pasujących do określonego kryterium wyszukiwania. W takim przypadku zapytanie znajdzie nazwy wszystkich metod w zestawie, które zwracają typy wyliczalne, takie jak tablice.
Przykład
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
W przykładzie użyto Assembly.GetTypes metody , aby zwrócić tablicę typów w określonym zestawie. Filtr Where Klauzula jest stosowany tak, aby zwracane były tylko typy publiczne. Dla każdego typu publicznego podzapytywanie jest generowane przy użyciu MethodInfo tablicy zwracanej z wywołania Type.GetMethods . Te wyniki są filtrowane w celu zwrócenia tylko tych metod, których typ zwracany jest tablicą lub inny typ implementujący IEnumerable<T>. Na koniec te wyniki są grupowane przy użyciu nazwy typu jako klucza.