Megosztás a következőn keresztül:


Útmutató: Szerelvény metaadatainak lekérdezése tükröződéssel (LINQ) (Visual Basic)

Az alábbi példa bemutatja, hogyan használható a LINQ a megadott keresési feltételnek megfelelő metódusok adott metaadatainak lekérésére. Ebben az esetben a lekérdezés megtalálja az összes olyan metódus nevét a szerelvényben, amely felsorolható típusokat, például tömböket ad vissza.

példa

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  

A példa a Assembly.GetTypes metódust használja a megadott szerelvény típusok tömbjének visszaadására. A Where Clause szűrőt úgy alkalmazza a rendszer, hogy csak a nyilvános típusok legyenek visszaadva. Minden nyilvános típushoz egy alkérdést hoz létre a rendszer a MethodInfo hívásból visszaadott Type.GetMethods tömb használatával. Ezek az eredmények csak azokat a metódusokat szűrik, amelyek visszatérési típusa tömb, vagy más olyan típus, amely implementálja IEnumerable<T>. Végül ezek az eredmények a típusnév kulcsként való használatával vannak csoportosítva.

Lásd még