Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В следующем примере показано, как LINQ можно использовать с отражением для получения определенных метаданных о методах, которые соответствуют указанному критерию поиска. В этом случае запрос найдет имена всех методов в сборке, возвращающих перечисленные типы, такие как массивы.
Пример
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
В примере используется Assembly.GetTypes метод для возврата массива типов в указанной сборке. Фильтр оператора Where применяется таким образом, чтобы возвращались только общедоступные типы. Вложенный запрос создается для каждого общедоступного типа с использованием массива MethodInfo, который возвращается из вызова Type.GetMethods. Эти результаты фильтруются, чтобы вернуть только те методы, возвращаемые типом которых является массив или другой тип, реализующий IEnumerable<T>. Наконец, эти результаты группируются с помощью имени типа в качестве ключа.