Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. |
Traduction
Source
|
Type.GetMethods, méthode (BindingFlags)
En cas de substitution dans une classe dérivée, recherche les méthodes définies pour le Type en cours, à l'aide des contraintes de liaison spécifiées.
Assembly : mscorlib (dans mscorlib.dll)
Paramètres
- bindingAttr
- Type : System.Reflection.BindingFlags
Masque de bits constitué d'un ou de plusieurs BindingFlags spécifiant le mode d'exécution de la recherche.
ou
Zéro, pour retourner null.
Valeur de retour
Type : System.Reflection.MethodInfo[]Tableau d'objets MethodInfo représentant toutes les méthodes définies pour le Type actuel qui correspondent aux contraintes de liaison spécifiées.
ou
Tableau vide du type MethodInfo si aucune méthode n'est définie pour le Type en cours ou si aucune des méthodes définies ne correspond aux contraintes de liaison.
Implémentations
_Type.GetMethods(BindingFlags)IReflect.GetMethods(BindingFlags)
La méthode GetMethods ne retourne pas les méthodes dans un ordre spécifique, par exemple par ordre alphabétique ou par ordre de déclaration. Votre code ne doit pas être fonction de l'ordre dans lequel les méthodes sont retournées, car cet ordre varie.
Les indicateurs de filtre BindingFlags suivants peuvent être utilisés pour définir les méthodes à inclure dans la recherche :
-
Vous devez spécifier soit BindingFlags.Instance, soit BindingFlags.Static pour obtenir un retour.
-
Spécifiez BindingFlags.Public pour inclure les méthodes publiques dans la recherche.
-
Spécifiez BindingFlags.NonPublic pour inclure des méthodes non publiques (c'est-à-dire des méthodes privées, internes et protégées) dans la recherche. Seules les méthodes protégées et internes sur les classes de base sont retournées ; les méthodes privées sur les classes de base ne sont pas retournées.
-
Spécifiez BindingFlags.FlattenHierarchy pour inclure les membres statiques public et protected en haut de la hiérarchie ; les membres statiques private dans les classes héritées ne sont pas inclus.
Les indicateurs de modificateur BindingFlags suivants peuvent être utilisés pour modifier le fonctionnement de la recherche :
-
BindingFlags.DeclaredOnly pour limiter la recherche aux méthodes déclarées dans Type et exclure celles qui ont été simplement héritées.
Consultez System.Reflection.BindingFlags pour plus d'informations.
Remarque
|
|---|
|
Vous ne pouvez pas omettre de paramètres lorsque vous cherchez les constructeurs et méthodes. Vous pouvez uniquement omettre les paramètres lors de l'appel. |
Si le T:System.Type actuel représente un type générique construit, cette méthode retourne les objets MethodInfo avec les paramètres de type remplacés par les arguments de type appropriés.
Si le Type actuel représente un paramètre de type dans la définition d'un type ou d'une méthode générique, cette méthode recherche les méthodes de la contrainte de classe, ou les méthodes de Object, s'il n'existe aucune contrainte de classe.
L'exemple suivant crée une classe comportant deux méthodes publiques et une méthode protégée, il crée un objet Type correspondant à MyTypeClass, il obtient toutes les méthodes publiques et non publiques et il affiche leurs noms.
using System; using System.Reflection; using System.Reflection.Emit; // Create a class having two public methods and one protected method. public class MyTypeClass { public void MyMethods() { } public int MyMethods1() { return 3; } protected String MyMethods2() { return "hello"; } } public class TypeMain { public static void Main() { Type myType =(typeof(MyTypeClass)); // Get the public methods. MethodInfo[] myArrayMethodInfo = myType.GetMethods(BindingFlags.Public|BindingFlags.Instance|BindingFlags.DeclaredOnly); Console.WriteLine("\nThe number of public methods is {0}.", myArrayMethodInfo.Length); // Display all the methods. DisplayMethodInfo(myArrayMethodInfo); // Get the nonpublic methods. MethodInfo[] myArrayMethodInfo1 = myType.GetMethods(BindingFlags.NonPublic|BindingFlags.Instance|BindingFlags.DeclaredOnly); Console.WriteLine("\nThe number of protected methods is {0}.", myArrayMethodInfo1.Length); // Display information for all methods. DisplayMethodInfo(myArrayMethodInfo1); } public static void DisplayMethodInfo(MethodInfo[] myArrayMethodInfo) { // Display information for all methods. for(int i=0;i<myArrayMethodInfo.Length;i++) { MethodInfo myMethodInfo = (MethodInfo)myArrayMethodInfo[i]; Console.WriteLine("\nThe name of the method is {0}.", myMethodInfo.Name); } } }
Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows XP SP2 Édition x64, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2
Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
Remarque