Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A .NET tükröződési API-kkal megvizsgálhatja a metaadatokat egy .NET-szerelvényben, és létrehozhatja az adott szerelvényben található típusok, típustagok és paraméterek gyűjteményét. Mivel ezek a gyűjtemények támogatják az általános IEnumerable<T> felületet, a LINQ használatával lekérdezhetők.
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 megkeresi az összes olyan metódus nevét a szerelvényben, amely számbavételi típusokat, például tömböket ad vissza.
Assembly assembly = Assembly.Load("System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e");
var pubTypesQuery = from type in assembly.GetTypes()
where type.IsPublic
from method in type.GetMethods()
where method.ReturnType.IsArray == true
|| (method.ReturnType.GetInterface(
typeof(System.Collections.Generic.IEnumerable<>).FullName!) != null
&& method.ReturnType.FullName != "System.String")
group method.ToString() by type.ToString();
foreach (var groupOfMethods in pubTypesQuery)
{
Console.WriteLine($"Type: {groupOfMethods.Key}");
foreach (var method in groupOfMethods)
{
Console.WriteLine($" {method}");
}
}
A példa a Assembly.GetTypes metódust használja a megadott szerelvény típusok tömbjének visszaadására. Az a , amelynél a szűrőt alkalmazzák, úgy, hogy csak a nyilvános típusok kerüljenek visszaadásra. Minden nyilvános típushoz egy alkérdést hoz létre a rendszer a Type.GetMethods hívásból visszaadott MethodInfo 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.