Aracılığıyla paylaş


Nasıl yapılır: Düşünceler ion (LINQ) ile Bir Derlemenin Meta Verilerini Sorgulama (Visual Basic)

Aşağıdaki örnekte LINQ'in belirtilen arama ölçütüyle eşleşen yöntemlerle ilgili belirli meta verileri almak için yansımayla nasıl kullanılabileceğini gösterir. Bu durumda sorgu, diziler gibi numaralandırılabilir türler döndüren derlemedeki tüm yöntemlerin adlarını bulur.

Örnek

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  

Örnek, belirtilen derlemede Assembly.GetTypes bir tür dizisi döndürmek için yöntemini kullanır. Where Yan Tümcesi filtresi, yalnızca genel türlerin döndürülmesi için uygulanır. Her ortak tür için, çağrıdan Type.GetMethods döndürülen dizi kullanılarak MethodInfo bir alt sorgu oluşturulur. Bu sonuçlar, yalnızca dönüş türü bir dizi veya uygulayan bir tür olan yöntemleri döndürecek IEnumerable<T>şekilde filtrelenir. Son olarak, bu sonuçlar tür adı anahtar olarak kullanılarak gruplandırılır.

Ayrıca bkz.