Bagikan melalui


Cara: Mengkueri Metadata Rakitan dengan Pantulan (LINQ) (Visual Basic)

Contoh berikut menunjukkan bagaimana LINQ dapat digunakan dengan refleksi untuk mengambil metadata tertentu tentang metode yang cocok dengan kriteria pencarian tertentu. Dalam hal ini, kueri akan menemukan nama semua metode dalam rakitan yang mengembalikan jenis yang dapat dijumlahkan seperti array.

Contoh

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  

Contoh menggunakan metode Assembly.GetTypes untuk mengembalikan array jenis dalam rakitan yang ditentukan. Filter Where Clause diterapkan sehingga hanya jenis publik yang dikembalikan. Untuk setiap tipe publik, subkueri dihasilkan dengan menggunakan array MethodInfo yang dikembalikan dari panggilan Type.GetMethods. Hasil ini difilter untuk mengembalikan hanya metode yang jenis pengembaliannya adalah array atau jenis lain yang mengimplementasikan IEnumerable<T>. Akhirnya, hasil ini dikelompokkan dengan menggunakan nama jenis sebagai kunci.

Lihat juga