Freigeben über


Type.GetMethods Methode

Definition

Ruft die Methoden des aktuellen Typeab.

Überlädt

Name Beschreibung
GetMethods()

Gibt alle öffentlichen Methoden der aktuellen TypeZurück.

GetMethods(BindingFlags)

Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird mithilfe der angegebenen Bindungseinschränkungen nach den für den aktuellen TypeWert definierten Methoden gesucht.

GetMethods()

Quelle:
Type.cs
Quelle:
Type.cs
Quelle:
Type.cs
Quelle:
Type.cs
Quelle:
Type.cs

Gibt alle öffentlichen Methoden der aktuellen TypeZurück.

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

Gibt zurück

Ein Array von MethodInfo Objekten, die alle öffentlichen Methoden darstellen, die für die aktuelle .Type

- oder -

Ein leeres Array vom Typ MethodInfo, wenn keine öffentlichen Methoden für die aktuellen Typedefiniert sind.

Implementiert

Attribute

Hinweise

In .NET 6 und früheren Versionen gibt die GetMethods-Methode keine Methoden in einer bestimmten Reihenfolge zurück, z. B. alphabetisch oder Deklarationsreihenfolge. Ihr Code darf nicht von der Reihenfolge abhängen, in der Methoden zurückgegeben werden, da diese Reihenfolge unterschiedlich ist. Ab .NET 7 ist die Sortierung jedoch auf der Grundlage der Metadatenbestellung in der Assembly deterministisch.

Konstruktoren sind nicht im Array von Methoden enthalten, die von diesem Aufruf zurückgegeben werden. Führen Sie einen separaten Aufruf aus, um die Konstruktormethoden abzurufen GetConstructors() .

Die folgende Tabelle zeigt, welche Member einer Basisklasse von den Get Methoden zurückgegeben werden, wenn sie einen Typ widerspiegeln.

Mitgliedertyp Statisch Nicht statisch
Konstruktor No No
Feld No Ja. Ein Feld ist immer hide-by-name-and-signature.
Ereignis Nicht anwendbar Die allgemeine Typsystemregel besteht darin, dass die Vererbung mit der der Methode identisch ist, die die Eigenschaft implementiert. Reflection behandelt Eigenschaften als Hide-by-Name-and-Signature. Siehe Hinweis 2 unten.
Methode No Ja. Eine Methode (sowohl virtuell als auch nicht-virtuell) kann Hide-by-name oder Hide-by-name-and-signature sein.
Geschachtelter Typ No No
Eigentum Nicht anwendbar Die allgemeine Typsystemregel besteht darin, dass die Vererbung mit der der Methode identisch ist, die die Eigenschaft implementiert. Reflection behandelt Eigenschaften als Hide-by-Name-and-Signature. Siehe Hinweis 2 unten.
  1. Hide-by-name-and-signature berücksichtigt alle Elemente der Signatur, einschließlich angepasste Modifikatoren, Rückgabetypen, Parametertypen, Sentinels und nicht verwaltete Aufrufkonventionen. Dies ist ein binärer Vergleich.

  2. Bei der Reflection sind Eigenschaften und Ereignisse Hide-by-Name-and-Signature. Wenn Sie über eine Eigenschaft mit einem Get- und einem Set-Accessor in der Basisklasse verfügen, die abgeleitete Klasse jedoch nur über einen Get-Accessor verfügt, blendet die abgeleitete Klasseneigenschaft die Basisklasseneigenschaft aus, und Sie können nicht auf den Setter der Basisklasse zugreifen.

  3. Benutzerdefinierte Attribute sind nicht Teil des allgemeinen Typsystems.

Hinweis

Parameter können beim Nachschlagen von Konstruktoren und Methoden nicht weggelassen werden. Sie können Parameter nur beim Aufrufen weglassen.

Wenn der aktuelle Typ einen konstruierten generischen Type Typ darstellt, gibt diese Methode die MethodInfo Objekte mit den Typparametern zurück, die durch die entsprechenden Typargumente ersetzt werden.

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

Weitere Informationen

Gilt für:

GetMethods(BindingFlags)

Quelle:
Type.cs
Quelle:
Type.cs
Quelle:
Type.cs
Quelle:
Type.cs
Quelle:
Type.cs

Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird mithilfe der angegebenen Bindungseinschränkungen nach den für den aktuellen TypeWert definierten Methoden gesucht.

public:
 abstract cli::array <System::Reflection::MethodInfo ^> ^ GetMethods(System::Reflection::BindingFlags bindingAttr);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods)]
public abstract System.Reflection.MethodInfo[] GetMethods(System.Reflection.BindingFlags bindingAttr);
public abstract System.Reflection.MethodInfo[] GetMethods(System.Reflection.BindingFlags bindingAttr);
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods)>]
abstract member GetMethods : System.Reflection.BindingFlags -> System.Reflection.MethodInfo[]
abstract member GetMethods : System.Reflection.BindingFlags -> System.Reflection.MethodInfo[]
Public MustOverride Function GetMethods (bindingAttr As BindingFlags) As MethodInfo()

Parameter

bindingAttr
BindingFlags

Eine bitweise Kombination der Enumerationswerte, die angeben, wie die Suche durchgeführt wird.

- oder -

Default um ein leeres Array zurückzugeben.

Gibt zurück

Ein Array von MethodInfo Objekten, die alle Methoden darstellen, die für den Aktuellen Type definiert sind, die den angegebenen Bindungseinschränkungen entsprechen.

- oder -

Ein leeres Array vom Typ MethodInfo, wenn keine Methoden für den aktuellen Typedefiniert sind, oder wenn keine der definierten Methoden mit den Bindungseinschränkungen übereinstimmt.

Implementiert

Attribute

Beispiele

Im folgenden Beispiel wird eine Klasse mit zwei öffentlichen Methoden und einer geschützten Methode erstellt, ein Objekt erstellt, das Type allen öffentlichen und nicht öffentlichen Methoden entspricht MyTypeClass, und deren Namen angezeigt.

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

Hinweise

Damit die GetMethods(BindingFlags) Überladung methodeninformationen erfolgreich abgerufen werden kann, muss das bindingAttr Argument mindestens eine von BindingFlags.Instance und BindingFlags.Static, zusammen mit mindestens einer von BindingFlags.NonPublic und .BindingFlags.Public

Die folgenden BindingFlags Filterkennzeichnungen können verwendet werden, um zu definieren, welche Methoden in die Suche einbezogen werden sollen:

  • Geben Sie an BindingFlags.Instance , dass Instanzmethoden eingeschlossen werden sollen.

  • Geben Sie an BindingFlags.Static , dass statische Methoden eingeschlossen werden sollen.

  • Geben Sie an BindingFlags.Public , dass öffentliche Methoden in die Suche eingeschlossen werden sollen.

  • Geben Sie an BindingFlags.NonPublic , dass nicht öffentliche Methoden (d. h. private, interne und geschützte Methoden) in die Suche einbezogen werden sollen. Es werden nur geschützte und interne Methoden für Basisklassen zurückgegeben; Private Methoden für Basisklassen werden nicht zurückgegeben.

  • Geben Sie BindingFlags.FlattenHierarchy an, um public und protected statische Member in der gesamten Hierarchie einzuschließen; private statische Member in geerbten Klassen sind nicht enthalten.

  • Geben Sie BindingFlags.Default allein ein leeres MethodInfo Array zurück.

Die folgenden BindingFlags Modifiziererkennzeichnungen können verwendet werden, um die Funktionsweise der Suche zu ändern:

  • BindingFlags.DeclaredOnly um nur die methoden zu durchsuchen, die für die TypeMethoden deklariert wurden, nicht, die einfach geerbt wurden.

Weitere Informationen finden Sie unter System.Reflection.BindingFlags.

In .NET 6 und früheren Versionen gibt die GetMethods-Methode keine Methoden in einer bestimmten Reihenfolge zurück, z. B. alphabetisch oder Deklarationsreihenfolge. Ihr Code darf nicht von der Reihenfolge abhängen, in der Methoden zurückgegeben werden, da diese Reihenfolge unterschiedlich ist. Ab .NET 7 ist die Sortierung jedoch auf der Grundlage der Metadatenbestellung in der Assembly deterministisch.

Wenn der aktuelle Typ einen konstruierten generischen Type Typ darstellt, gibt diese Methode die MethodInfo Objekte mit den Typparametern zurück, die durch die entsprechenden Typargumente ersetzt werden.

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

Weitere Informationen

Gilt für: