Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

Type.GetMethod méthode (String)

 

Recherche la méthode publique avec le nom spécifié.

Espace de noms:   System
Assembly:  mscorlib (dans mscorlib.dll)

public MethodInfo GetMethod(
	string name
)

Paramètres

name
Type: System.String

Chaîne contenant le nom de la méthode publique à obtenir.

Valeur de retour

Type: System.Reflection.MethodInfo

Objet qui représente la méthode publique avec le nom spécifié, si elle est trouvée ; sinon, null.

Exception Condition
AmbiguousMatchException

Plusieurs méthodes ont été trouvées avec le nom spécifié.

ArgumentNullException

name a la valeur null.

La recherche de name respecte la casse. La recherche inclut des méthodes d’instance publique de static et public.

Si une méthode est surchargée et a plus d’une méthode publique, la GetMethod(String) méthode lève une exception une AmbiguousMatchException exception. Dans l’exemple suivant, une exception est levée, car il existe plusieurs surcharges publique de la Int32.ToString (méthode). Quant à eux, car le Person.ToString substitutions de méthode Object.ToString et par conséquent n’est pas surchargé, la GetMethod(String) (méthode) est en mesure de récupérer le MethodInfo objet.

using System;
using System.Reflection;

public class Person
{
   public String FirstName;
   public String LastName;

   public override String ToString()
   {
      return (FirstName + " " + LastName).Trim();
   }
}

public class Example
{
   public static void Main()
   {
      Type t = typeof(Person);
      RetrieveMethod(t, "ToString");

      t = typeof(Int32);
      RetrieveMethod(t, "ToString");
   }

   private static void RetrieveMethod(Type t, String name)
   {   
      try {
         MethodInfo m = t.GetMethod(name);
         if (m != null) 
            Console.WriteLine("{0}.{1}: {2} method", m.ReflectedType.Name,
                              m.Name, m.IsStatic ? "Static" : "Instance");    
         else
            Console.WriteLine("{0}.ToString method not found", t.Name);
      }
      catch (AmbiguousMatchException) {
         Console.WriteLine("{0}.{1} has multiple public overloads.", 
                           t.Name, name);
      }
   }
}
// The example displays the following output:
//       Person.ToString: Instance method
//       Int32.ToString has multiple public overloads.

Vous pouvez effectuer l’une des opérations suivantes pour récupérer une méthode spécifique :

  • Appelez le GetMethod(String, BindingFlags) (méthode) et spécifiez un bindingAttr argument qui identifie de façon unique la méthode. Par exemple, si l’exception est levée, car un type a un statique et une surcharge de l’instance, vous pouvez spécifier un bindingAttr argument de BindingFlags.InstanceOrBindingFlags.Instance.

  • Appelez une surcharge de la GetMethod méthode inclut un types paramètre qui définit les types de paramètres de la méthode.

  • Appelez le GetMethods() méthode pour récupérer un tableau qui contient toutes les méthodes publiques qui appartiennent à un type. Vous pouvez ensuite itérer pour identifier les méthodes dupliquées nommés name.

Si le t : System.type actuel représente un type générique construit, cette méthode retourne la MethodInfo avec les paramètres de type remplacés par les arguments de type approprié.

Si le courant Type représente un paramètre de type dans la définition d’un type générique ou de 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.

System_CAPS_noteRemarque

Pour les méthodes génériques, n’incluez pas les arguments de type dans name. Par exemple, le code c# GetMember("MyMethod<int>") recherche un membre portant le nom «MyMethod<int>», plutôt que pour une méthode nommée MyMethod qui possède un argument générique de type int.

L’exemple suivant obtient une méthode nommée MethodA.


using System;
using System.Reflection;

class Program
{

    // Method to get:
    public void MethodA() { }


    static void Main(string[] args)
    {

        // Get MethodA()
        MethodInfo mInfo = typeof(Program).GetMethod("MethodA");
        Console.WriteLine("Found method: {0}", mInfo);

    }
}

.NET Framework
Disponible depuis 1.1
Bibliothèque de classes portable
Pris en charge dans : plateformes .NET portables
Silverlight
Disponible depuis 2.0
Silverlight pour Windows Phone
Disponible depuis 7.0
Retour au début
Afficher: