Type.GetMethods Méthode

Définition

Obtient les méthodes du Type actuel.Gets the methods of the current Type.

Surcharges

GetMethods(BindingFlags)

En cas de substitution dans une classe dérivée, recherche les méthodes définies pour le Type actuel, à l'aide des contraintes de liaison spécifiées.When overridden in a derived class, searches for the methods defined for the current Type, using the specified binding constraints.

GetMethods()

Retourne toutes les méthodes publiques du Type actuel.Returns all the public methods of the current Type.

GetMethods(BindingFlags)

En cas de substitution dans une classe dérivée, recherche les méthodes définies pour le Type actuel, à l'aide des contraintes de liaison spécifiées.When overridden in a derived class, searches for the methods defined for the current Type, using the specified binding constraints.

public:
 abstract cli::array <System::Reflection::MethodInfo ^> ^ GetMethods(System::Reflection::BindingFlags bindingAttr);
public abstract System.Reflection.MethodInfo[] GetMethods (System.Reflection.BindingFlags bindingAttr);
abstract member GetMethods : System.Reflection.BindingFlags -> System.Reflection.MethodInfo[]
Public MustOverride Function GetMethods (bindingAttr As BindingFlags) As MethodInfo()

Paramètres

bindingAttr
BindingFlags

Combinaison de bits de valeurs d’énumération qui spécifie la façon dont est effectuée la recherche.A bitwise combination of the enumeration values that specify how the search is conducted.

- ou --or-

Default pour retourner un tableau vide.Default to return an empty array.

Retours

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.An array of MethodInfo objects representing all methods defined for the current Type that match the specified binding constraints.

ou-or- Tableau vide du type MethodInfo si aucune méthode n’est définie pour le Type actuel ou si aucune des méthodes définies ne correspond aux contraintes de liaison.An empty array of type MethodInfo, if no methods are defined for the current Type, or if none of the defined methods match the binding constraints.

Implémente

Exemples

L’exemple suivant crée une classe avec deux méthodes publiques et une méthode protégée, crée un Type objet correspondant à MyTypeClass, obtient toutes les méthodes publiques et non publiques et affiche leurs noms.The following example creates a class with two public methods and one protected method, creates a Type object corresponding to MyTypeClass, gets all public and non-public methods, and displays their names.

using namespace System;
using namespace System::Reflection;
using namespace System::Reflection::Emit;

// Create a class having two public methods and one protected method.
public ref class MyTypeClass
{
public:
   void MyMethods(){}

   int MyMethods1()
   {
      return 3;
   }


protected:
   String^ MyMethods2()
   {
      return "hello";
   }
};

void DisplayMethodInfo( array<MethodInfo^>^myArrayMethodInfo )
{
   // Display information for all methods.
   for ( int i = 0; i < myArrayMethodInfo->Length; i++ )
   {
      MethodInfo^ myMethodInfo = dynamic_cast<MethodInfo^>(myArrayMethodInfo[ i ]);
      Console::WriteLine( "\nThe name of the method is {0}.", myMethodInfo->Name );
   }
}

int main()
{
   Type^ myType = MyTypeClass::typeid;
   
   // Get the public methods.
   array<MethodInfo^>^myArrayMethodInfo = myType->GetMethods( static_cast<BindingFlags>(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.
   array<MethodInfo^>^myArrayMethodInfo1 = myType->GetMethods( static_cast<BindingFlags>(BindingFlags::NonPublic | BindingFlags::Instance | BindingFlags::DeclaredOnly) );
   Console::WriteLine( "\nThe number of protected methods is {0}->", myArrayMethodInfo1->Length );
   
   // Display information for all methods.
   DisplayMethodInfo( myArrayMethodInfo1 );
}

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);
        }
    }
}

Imports System.Reflection
Imports System.Reflection.Emit

' Create a class having two public methods and one protected method.
Public Class MyTypeClass
    Public Sub MyMethods()
    End Sub
    Public Function MyMethods1() As Integer
        Return 3
    End Function 'MyMethods1
    Protected Function MyMethods2() As [String]
        Return "hello"
    End Function 'MyMethods2
End Class
Public Class TypeMain
    Public Shared Sub Main()

        Dim myType As Type = GetType(MyTypeClass)
        ' Get the public methods.
        Dim myArrayMethodInfo As MethodInfo() = myType.GetMethods((BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.DeclaredOnly))
        Console.WriteLine((ControlChars.Cr + "The number of public methods is " & myArrayMethodInfo.Length.ToString() & "."))
        ' Display all the public methods.
        DisplayMethodInfo(myArrayMethodInfo)
        ' Get the nonpublic methods.
        Dim myArrayMethodInfo1 As MethodInfo() = myType.GetMethods((BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.DeclaredOnly))
        Console.WriteLine((ControlChars.Cr + "The number of protected methods is " & myArrayMethodInfo1.Length.ToString() & "."))
        ' Display all the nonpublic methods.
        DisplayMethodInfo(myArrayMethodInfo1)
    End Sub

    Public Shared Sub DisplayMethodInfo(ByVal myArrayMethodInfo() As MethodInfo)
        ' Display information for all methods.
        Dim i As Integer
        For i = 0 To myArrayMethodInfo.Length - 1
            Dim myMethodInfo As MethodInfo = CType(myArrayMethodInfo(i), MethodInfo)
            Console.WriteLine((ControlChars.Cr + "The name of the method is " & myMethodInfo.Name & "."))
        Next i
    End Sub
End Class

Remarques

Pour que GetMethods(BindingFlags) la surcharge récupère correctement les informations de méthode bindingAttr , l’argument doit inclure au moins BindingFlags.Instance un BindingFlags.Staticde et, ainsi qu’au moins BindingFlags.NonPublic un BindingFlags.Publicde et.For the GetMethods(BindingFlags) overload to successfully retrieve method information, the bindingAttr argument must include at least one of BindingFlags.Instance and BindingFlags.Static, along with at least one of BindingFlags.NonPublic and BindingFlags.Public.

Les indicateurs BindingFlags de filtre suivants peuvent être utilisés pour définir les méthodes à inclure dans la recherche :The following BindingFlags filter flags can be used to define which methods to include in the search:

  • Spécifiez BindingFlags.Instance pour inclure des méthodes d’instance.Specify BindingFlags.Instance to include instance methods.

  • Spécifiez BindingFlags.Static pour inclure des méthodes statiques.Specify BindingFlags.Static to include static methods.

  • Spécifiez BindingFlags.Public pour inclure les méthodes publiques dans la recherche.Specify BindingFlags.Public to include public methods in the search.

  • Spécifiez BindingFlags.NonPublic pour inclure les méthodes non publiques (c’est-à-dire les méthodes privées, internes et protégées) dans la recherche.Specify BindingFlags.NonPublic to include non-public methods (that is, private, internal, and protected methods) in the search. 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.Only protected and internal methods on base classes are returned; private methods on base classes are not returned.

  • Spécifiez BindingFlags.FlattenHierarchy pour public inclure protected et ajouter des membres statiques dans la hiérarchie. private les membres statiques dans les classes héritées ne sont pas inclus.Specify BindingFlags.FlattenHierarchy to include public and protected static members up the hierarchy; private static members in inherited classes are not included.

  • Spécifiez BindingFlags.Default seul pour retourner un MethodInfo tableau vide.Specify BindingFlags.Default alone to return an empty MethodInfo array.

Vous pouvez BindingFlags utiliser les indicateurs de modificateur suivants pour modifier le fonctionnement de la recherche :The following BindingFlags modifier flags can be used to change how the search works:

  • BindingFlags.DeclaredOnlypour rechercher uniquement les méthodes déclarées sur Typele, et non celles qui ont simplement été héritées.BindingFlags.DeclaredOnly to search only the methods declared on the Type, not methods that were simply inherited.

Pour plus d'informations, voir System.Reflection.BindingFlags.See System.Reflection.BindingFlags for more information.

La GetMethods méthode ne retourne pas de méthodes dans un ordre particulier, par exemple par ordre alphabétique ou par ordre de déclaration.The GetMethods method does not return methods in a particular order, such as alphabetical or declaration order. Votre code ne doit pas dépendre de l’ordre dans lequel les méthodes sont retournées, car cet ordre varie.Your code must not depend on the order in which methods are returned, because that order varies.

Si le actuel Type représente un type générique construit, cette méthode retourne les MethodInfo objets avec les paramètres de type remplacés par les arguments de type appropriés.If the current Type represents a constructed generic type, this method returns the MethodInfo objects with the type parameters replaced by the appropriate type arguments.

Si le actuel Type représente un paramètre de type dans la définition d’un type générique ou d’une méthode générique, cette méthode recherche les méthodes de la contrainte de classe ou Object les méthodes de si aucune contrainte de classe n’existe.If the current Type represents a type parameter in the definition of a generic type or generic method, this method searches the methods of the class constraint, or the methods of Object if there is no class constraint.

Voir aussi

GetMethods()

Retourne toutes les méthodes publiques du Type actuel.Returns all the public methods of the current Type.

public:
 virtual cli::array <System::Reflection::MethodInfo ^> ^ GetMethods();
public System.Reflection.MethodInfo[] GetMethods ();
abstract member GetMethods : unit -> System.Reflection.MethodInfo[]
override this.GetMethods : unit -> System.Reflection.MethodInfo[]
Public Function GetMethods () As MethodInfo()

Retours

Tableau d'objets MethodInfo représentant toutes les méthodes publiques définies pour le Type actuel.An array of MethodInfo objects representing all the public methods defined for the current Type.

- ou --or- Tableau vide du type MethodInfo si aucune méthode publique n'est définie pour le Type actuel.An empty array of type MethodInfo, if no public methods are defined for the current Type.

Implémente

Remarques

La GetMethods méthode ne retourne pas de méthodes dans un ordre particulier, par exemple par ordre alphabétique ou par ordre de déclaration.The GetMethods method does not return methods in a particular order, such as alphabetical or declaration order. Votre code ne doit pas dépendre de l’ordre dans lequel les méthodes sont retournées, car cet ordre varie.Your code must not depend on the order in which methods are returned, because that order varies.

Les constructeurs ne sont pas inclus dans le tableau de méthodes retourné par cet appel.Constructors are not included in the array of methods returned by this call. Effectuez un appel séparé à GetConstructors() pour obtenir les méthodes de constructeur.Make a separate call to GetConstructors() to get the constructor methods.

Le tableau suivant indique les membres d’une classe de base qui sont retournés par les méthodes lors de la Get réflexion sur un type.The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

Type de membreMember Type StatiqueStatic Non statiqueNon-Static
ConstructeurConstructor NonNo NonNo
ChampField NonNo Oui.Yes. Un champ est toujours masqué par nom-et-signature.A field is always hide-by-name-and-signature.
événementEvent Non applicableNot applicable La règle de système de type commun est que l’héritage est le même que celui des méthodes qui implémentent la propriété.The common type system rule is that the inheritance is the same as that of the methods that implement the property. La réflexion traite les propriétés comme étant masquées-par-nom-et-signature.Reflection treats properties as hide-by-name-and-signature. Voir la remarque 2 ci-dessous.See note 2 below.
MéthodeMethod NonNo Oui.Yes. Une méthode (à la fois virtuelles et non virtuelles) peut être masquée ou masquée-par-nom-et-signature.A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
Type imbriquéNested Type NonNo NonNo
PropertyProperty Non applicableNot applicable La règle de système de type commun est que l’héritage est le même que celui des méthodes qui implémentent la propriété.The common type system rule is that the inheritance is the same as that of the methods that implement the property. La réflexion traite les propriétés comme étant masquées-par-nom-et-signature.Reflection treats properties as hide-by-name-and-signature. Voir la remarque 2 ci-dessous.See note 2 below.
  1. Hide-by-Name-and-signature prend en compte toutes les parties de la signature, y compris les modificateurs personnalisés, les types de retour, les types de paramètres, les sentinelles et les conventions d’appel non managées.Hide-by-name-and-signature considers all of the parts of the signature, including custom modifiers, return types, parameter types, sentinels, and unmanaged calling conventions. Il s’agit d’une comparaison binaire.This is a binary comparison.

  2. Pour la réflexion, les propriétés et les événements sont masqués par nom et signature.For reflection, properties and events are hide-by-name-and-signature. Si vous avez une propriété avec un accesseur get et un accesseur set dans la classe de base, mais que la classe dérivée a uniquement un accesseur Get, la propriété de la classe dérivée masque la propriété de la classe de base, et vous ne pouvez pas accéder à la méthode setter sur la classe de base.If you have a property with both a get and a set accessor in the base class, but the derived class has only a get accessor, the derived class property hides the base class property, and you will not be able to access the setter on the base class.

  3. Les attributs personnalisés ne font pas partie du système de type commun.Custom attributes are not part of the common type system.

Notes

Vous ne pouvez pas omettre de paramètres lors de la recherche de constructeurs et de méthodes.You cannot omit parameters when looking up constructors and methods. Vous ne pouvez omettre des paramètres que lors de l’appel de.You can only omit parameters when invoking.

Si le actuel Type représente un type générique construit, cette méthode retourne les MethodInfo objets avec les paramètres de type remplacés par les arguments de type appropriés.If the current Type represents a constructed generic type, this method returns the MethodInfo objects with the type parameters replaced by the appropriate type arguments.

Si le actuel Type représente un paramètre de type dans la définition d’un type générique ou d’une méthode générique, cette méthode recherche les méthodes de la contrainte de classe ou Object les méthodes de si aucune contrainte de classe n’existe.If the current Type represents a type parameter in the definition of a generic type or generic method, this method searches the methods of the class constraint, or the methods of Object if there is no class constraint.

Voir aussi

S’applique à