Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Type.GetMethod-Methode: (String)

 

Sucht die öffentliche Methode mit dem angegebenen Namen.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

public MethodInfo GetMethod(
	string name
)

Parameter

name
Type: System.String

Die Zeichenfolge, die den Namen der abzurufenden öffentlichen Methode enthält.

Rückgabewert

Type: System.Reflection.MethodInfo

Ein Objekt, das die öffentliche Methode mit dem angegebenen Namen darstellt, sofern gefunden, andernfalls null.

Exception Condition
AmbiguousMatchException

Es wurden mehrere Methoden mit dem angegebenen Namen gefunden.

ArgumentNullException

name ist null.

Die Suche nach name Groß-/Kleinschreibung beachtet. Die Suche enthält öffentliche statisch und öffentlich Instanzmethoden.

Wenn eine Methode überladen wird und verfügt über mehr als eine öffentliche Methode, die GetMethod(String) -Methode löst eine AmbiguousMatchException Ausnahme. Im folgenden Beispiel wird eine Ausnahme ausgelöst, da es mehr als eine öffentliche Überladung von ist der Int32.ToString Methode. Andererseits, da die Person.ToString methodenüberschreibungen Object.ToString und ist daher nicht überladen, die GetMethod(String) Methode kann zum Abrufen der MethodInfo Objekt.

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.

Sie können eine der folgenden zum Abrufen einer bestimmten Methode vorgehen:

  • Rufen Sie die GetMethod(String, BindingFlags) Methode, und geben Sie einen bindingAttr Argument, das die Methode eindeutig identifiziert. Beispielsweise, wenn die Ausnahme ausgelöst wird, da ein Typ eine statische und eine Überladung für die Instanz hat, können Sie angeben einer bindingAttr Argument BindingFlags.InstanceOrBindingFlags.Instance.

  • Rufen Sie eine Überladung von der GetMethod Methode, enthält eine types Parameter, die die Typen der Parameter der Methode definiert.

  • Rufen Sie die GetMethods() Methode, um ein Array, das alle öffentlichen Methoden, die zu einem Typ gehören enthält abzurufen. Sie können dann durchlaufen, es zum Identifizieren von doppelten Methoden mit dem Namen name.

Wenn der aktuelle t: System.Type einen konstruierten generischen Typ darstellt, gibt diese Methode die MethodInfo mit Parametern für den durch die entsprechenden Typargumente ersetzt.

Wenn die aktuelle Type stellt ein Typparameter in der Definition eines generischen Typs oder generische Methode, diese Methode sucht, die Methoden der klasseneinschränkung oder die Methoden der Object Wenn ohne klasseneinschränkung ist.

System_CAPS_noteHinweis

Für generische Methoden enthalten nicht die Typargumente in name. Z. B. den C#-Code GetMember("MyMethod<int>") sucht ein Element mit dem Textnamen "MyMethod<int>", anstatt für eine Methode namens MyMethod , die ein generisches Argument des Typs hat int.

Im folgenden Beispiel wird eine Methode namens 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
Verfügbar seit 1.1
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Zurück zum Anfang
Anzeigen: