下列範例示範如何使用 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>的類型的方法。 最後,這些結果會使用類型名稱作為索引鍵來分組。