(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

Type.GetMethod-Methode (String, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])

Sucht nach der angegebenen Methode, deren Parameter den angegebenen Argumenttypen und -modifizierern entsprechen, und verwendet dabei die angegebenen Bindungseinschränkungen und die angegebene Aufrufkonvention.

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

public MethodInfo GetMethod(
	string name,
	BindingFlags bindingAttr,
	Binder binder,
	CallingConventions callConvention,
	Type[] types,
	ParameterModifier[] modifiers
)

Parameter

name
Typ: System.String
Die Zeichenfolge, die den Namen der abzurufenden Methode enthält.
bindingAttr
Typ: System.Reflection.BindingFlags
Eine Bitmaske aus einem oder mehreren BindingFlags, die angeben, wie die Suche durchgeführt wird.
- oder -
0 (null), damit null zurückgegeben wird.
binder
Typ: System.Reflection.Binder
Ein Objekt, das eine Gruppe von Eigenschaften definiert und eine Bindung ermöglicht. Dazu kann die Auswahl einer überladenen Methode, die Umwandlung von Argumenttypen und der Aufruf eines Members durch Reflektion gehören.
- oder -
Ein Nullverweis (Nothing in Visual Basic), wenn DefaultBinder verwendet werden soll.
callConvention
Typ: System.Reflection.CallingConventions
Das Objekt, das die Regeln für Reihenfolge und Layout der Argumente, die Art der Übergabe des Rückgabewerts, die für Argumente zu verwendenden Register und die Art der Bereinigung des Stapels angibt.
types
Typ: System.Type[]
Ein Array von Type-Objekten, das die Anzahl, die Reihenfolge und den Typ der Parameter der abzurufenden Methode darstellt.
- oder -
Ein leeres Array von Type-Objekten (bereitgestellt vom EmptyTypes-Feld) zum Abrufen einer Methode, die keine Parameter akzeptiert.
modifiers
Typ: System.Reflection.ParameterModifier[]
Ein Array von ParameterModifier-Objekten, die die Attribute darstellen, die dem entsprechenden Element im types-Array zugeordnet sind. Darf nur bei Aufrufen über COM-Interop verwendet werden. Es werden außerdem nur Parameter berücksichtigt, die als Verweis übergeben werden. Der Standardbinder verarbeitet diesen Parameter nicht.

Rückgabewert

Typ: System.Reflection.MethodInfo
Ein Objekt, das die Methode darstellt, die den angegebenen Anforderungen entspricht, sofern diese gefunden wird. Andernfalls null.

Implementiert

_Type.GetMethod(String, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])

AusnahmeBedingung
AmbiguousMatchException

Es wurde mehr als eine Methode mit dem angegebenen Namen gefunden, die den angegebenen Bindungseinschränkungen entspricht.

ArgumentNullException

name ist null.

- oder -

types ist null.

- oder -

Eines der Elemente in types ist null.

ArgumentException

types ist mehrdimensional.

- oder -

modifiers ist mehrdimensional.

Obwohl der Standardbinder ParameterModifier (den modifiers-Parameter) nicht verarbeitet, können Sie die abstrakte System.Reflection.Binder-Klasse verwenden, um einen benutzerdefinierten Binder zu schreiben, der modifiers verarbeitet. ParameterModifier wird nur bei Aufrufen über COM-Interop verwendet. Es werden außerdem nur Parameter berücksichtigt, die als Verweis übergeben werden.

In der folgenden Tabelle sind die Member einer Basisklasse aufgeführt, die bei der Reflektion eines Typs von den GetXXX-Methoden zurückgegeben werden.

Memberart

Static

Nicht statisch

Konstruktor

nein

nein

Feld

nein

Ja. Felder sind immer nach Namen und Signatur verdeckt.

Ereignis

Nicht zutreffend

Im allgemeinen Typsystem ist die Vererbung i. d. R. dieselbe wie die Vererbung der Methoden, die die Eigenschaft implementieren. Die Reflektion behandelt Eigenschaften als nach Namen und Signatur verdeckt. Siehe Hinweis 2 unten.

Methode

nein

Ja. Eine Methode, virtuell oder nicht virtuell, kann nach Namen oder nach Namen und Signatur verdeckt sein.

Geschachtelter Typ

nein

nein

Eigenschaft

Nicht zutreffend

Im allgemeinen Typsystem ist die Vererbung i. d. R. dieselbe wie die Vererbung der Methoden, die die Eigenschaft implementieren. Die Reflektion behandelt Eigenschaften als nach Namen und Signatur verdeckt. Siehe Hinweis 2 unten.

  1. Beim Verdecken nach Namen und Signatur werden alle Teile der Signatur berücksichtigt. Dies schließt benutzerdefinierte Modifizierer, Rückgabetypen, Parametertypen, Sentinels und nicht verwaltete Aufrufkonventionen ein. Dies ist ein binärer Vergleich.

  2. Die Reflektion behandelt Eigenschaften und Ereignisse als nach Namen und Signatur verdeckt. Wenn eine Eigenschaft in einer Basisklasse sowohl einen Get-Accessor als auch einen Set-Accessor, in einer abgeleiteten Klasse hingegen nur einen Get-Accessor besitzt, verdeckt die Eigenschaft der abgeleiteten Klasse die Eigenschaft der Basisklasse, und der Set-Accessor der Basisklasse ist nicht mehr zugänglich.

  3. Benutzerdefinierte Attribute sind nicht Teil des allgemeinen Typsystems.

Über die folgenden BindingFlags-Filterflags kann festgelegt werden, welche Methoden in die Suche einbezogen werden:

  • Es wird nur dann ein Ergebnis zurückgegeben, wenn entweder BindingFlags.Instance oder BindingFlags.Static angegeben wird.

  • Geben Sie BindingFlags.Public an, um öffentliche Methoden in die Suche einzubeziehen.

  • Geben Sie BindingFlags.NonPublic an, um nicht öffentliche Methoden, d. h. private, interne und geschützte Methoden, in die Suche einzubeziehen.

  • Geben Sie BindingFlags.FlattenHierarchy an, um statische public-Member und protected-Member in der Hierarchie einzuschließen. Statische private-Member in vererbten Klassen sind nicht eingeschlossen.

Die Funktionsweise der Suche kann über die folgenden BindingFlags-Modifiziererflags beeinflusst werden:

  • BindingFlags.IgnoreCase , wenn die Groß- und Kleinschreibung von name nicht berücksichtigt werden soll.

  • BindingFlags.DeclaredOnly , wenn ausschließlich nach für Type deklarierten Methoden gesucht werden soll und nicht nach Methoden, die nur geerbt wurden.

Weitere Informationen finden Sie unter System.Reflection.BindingFlags.

HinweisHinweis

Bei der Suche nach Konstruktoren oder Methoden dürfen keine Parameter ausgelassen werden. Nur beim Aufruf können Parameter ausgelassen werden.

Wenn der aktuelle T:System.Type einen konstruierten generischen Typ darstellt, gibt diese Methode die MethodInfo zurück, wobei die Typparameter durch die entsprechenden Typargumente ersetzt wurden.

Wenn der aktuelle Type einen Typparameter in der Definition eines generischen Typs oder einer generischen Methode darstellt, durchsucht diese Methode die Methoden der Klasseneinschränkung oder die Methoden von Object, wenn keine Klasseneinschränkung vorhanden ist.

HinweisHinweis

Nehmen Sie bei generische Methoden die Typargumente nicht in name auf. Mit dem C#-Code GetMember("MyMethod<int>") wird z. B. nach einem Member mit dem Textnamen "MyMethod<int>" gesucht, nicht nach einer Methode mit dem Namen MyMethod mit einem generischen Argument vom int-Typ.

Im folgenden Beispiel werden bestimmte Überladungen von MethodA gesucht. Als Suchparameter werden Bindungseinschränkungen, Aufrufkonventionen sowie verschiedene Argumenttypen angegeben.

HinweisHinweis

Für das Visual C# 2005-Beispiel muss die Compileroption /unsafe verwendet werden.



using System;
using System.Reflection;

class Program
{
    // Methods to get:

    public void MethodA(int i, int j) { }

    public void MethodA(int[] i) { }

    public unsafe void MethodA(int* i) { }

    public void MethodA(ref int r) {}

    // Method that takes an out parameter:
    public void MethodA(int i, out int o) { o = 100;}


  static void Main(string[] args)
  {
    MethodInfo mInfo;

    // Get MethodA(int i, int j)
    mInfo = typeof(Program).GetMethod("MethodA",
        BindingFlags.Public | BindingFlags.Instance,
        null,
        CallingConventions.Any,
        new Type[] { typeof(int), typeof(int) },
        null);
    Console.WriteLine("Found method: {0}", mInfo);

    // Get MethodA(int[] i)
    mInfo = typeof(Program).GetMethod("MethodA",
        BindingFlags.Public | BindingFlags.Instance,
        null,
        CallingConventions.Any,
        new Type[] { typeof(int[]) },
        null);
    Console.WriteLine("Found method: {0}", mInfo);

    // Get MethodA(int* i)
    mInfo = typeof(Program).GetMethod("MethodA",
        BindingFlags.Public | BindingFlags.Instance,
        null,
        CallingConventions.Any,
        new Type[] { typeof(int).MakePointerType() },
        null);
    Console.WriteLine("Found method: {0}", mInfo);

    // Get MethodA(ref int r)
    mInfo = typeof(Program).GetMethod("MethodA",
        BindingFlags.Public | BindingFlags.Instance,
        null,
        CallingConventions.Any,
        new Type[] { typeof(int).MakeByRefType() },
        null);
    Console.WriteLine("Found method: {0}", mInfo);

    // Get MethodA(int i, out int o)
    mInfo = typeof(Program).GetMethod("MethodA",
        BindingFlags.Public | BindingFlags.Instance,
        null,
        CallingConventions.Any,
        new Type[] { typeof(int), typeof(int).MakeByRefType() },
        null);
    Console.WriteLine("Found method: {0}", mInfo);

  }
}


.NET Framework

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

.NET für Windows Phone-Apps

Unterstützt in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
Anzeigen:
© 2014 Microsoft