Type.GetMethods Methode

Definitie

Hiermee haalt u de methoden van de huidige Typeop.

Overloads

Name Description
GetMethods()

Retourneert alle openbare methoden van de huidige Type.

GetMethods(BindingFlags)

Wanneer deze worden overschreven in een afgeleide klasse, zoekt u naar de methoden die zijn gedefinieerd voor de huidige Type, met behulp van de opgegeven bindingsbeperkingen.

GetMethods()

Bron:
Type.cs
Bron:
Type.cs
Bron:
Type.cs
Bron:
Type.cs
Bron:
Type.cs

Retourneert alle openbare methoden van de huidige Type.

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()

Retouren

Een matrix van MethodInfo objecten die alle openbare methoden vertegenwoordigen die zijn gedefinieerd voor de huidige Type.

– of –

Een lege matrix van het type MethodInfo, als er geen openbare methoden zijn gedefinieerd voor de huidige Type.

Implementeringen

Kenmerken

Opmerkingen

In .NET 6 en eerdere versies retourneert de methode GetMethods geen methoden in een bepaalde volgorde, zoals alfabetische of declaratievolgorde. Uw code mag niet afhankelijk zijn van de volgorde waarin methoden worden geretourneerd, omdat die volgorde varieert. Vanaf .NET 7 is de volgorde echter deterministisch op basis van de volgorde van metagegevens in de assembly.

Constructors worden niet opgenomen in de matrix van methoden die door deze aanroep worden geretourneerd. Maak een afzonderlijke aanroep om de constructormethoden op te GetConstructors() halen.

In de volgende tabel ziet u welke leden van een basisklasse worden geretourneerd door de Get methoden bij het weergeven van een type.

Lidmaatschapssoort Static Niet-statisch
Constructeur No No
Veld No Yes. Een veld wordt altijd verborgen op basis van naam en kenmerk.
Gebeurtenis Niet van toepassing De algemene regels van het type-systeem zijn dat de overerving hetzelfde is als die van de methoden die de eigenschap implementeren. Weerspiegeling behandelt eigenschappen als hide-by-name-and-signature. Zie opmerking 2 hieronder.
Methode No Yes. Een methode (zowel virtueel als niet-virtueel) kan worden verborgen op basis van naam of op basis van naam en handtekening.
Geneste type No No
Vastgoed Niet van toepassing De algemene regels van het type-systeem zijn dat de overerving hetzelfde is als die van de methoden die de eigenschap implementeren. Weerspiegeling behandelt eigenschappen als hide-by-name-and-signature. Zie opmerking 2 hieronder.
  1. Hide-by-name-and-signature beschouwt alle onderdelen van de handtekening, waaronder aangepaste modifiers, retourtypen, parametertypen, sentinels en onbeheerde aanroepconventies. Dit is een binaire vergelijking.

  2. Voor reflectie worden eigenschappen en gebeurtenissen verborgen op basis van naam en signatuur. Als u een eigenschap hebt met zowel een get als een set accessor in de basisklasse, maar de afgeleide klasse alleen een get-accessor heeft, verbergt de eigenschap afgeleide klasse de eigenschap basisklasse en hebt u geen toegang tot de setter op de basisklasse.

  3. Aangepaste kenmerken maken geen deel uit van het algemene typesysteem.

Note

U kunt parameters niet weglaten bij het opzoeken van constructors en methoden. U kunt alleen parameters weglaten bij het aanroepen.

Als de huidige Type een samengesteld algemeen type vertegenwoordigt, retourneert deze methode de MethodInfo objecten door de typeparameters vervangen door de juiste typeargumenten.

Als de huidige Type een typeparameter vertegenwoordigt in de definitie van een algemeen type of algemene methode, doorzoekt deze methode de methoden van de klassebeperking of de methoden van Object als er geen klassebeperking is.

Zie ook

Van toepassing op

GetMethods(BindingFlags)

Bron:
Type.cs
Bron:
Type.cs
Bron:
Type.cs
Bron:
Type.cs
Bron:
Type.cs

Wanneer deze worden overschreven in een afgeleide klasse, zoekt u naar de methoden die zijn gedefinieerd voor de huidige Type, met behulp van de opgegeven bindingsbeperkingen.

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()

Parameters

bindingAttr
BindingFlags

Een bitsgewijze combinatie van de opsommingswaarden die aangeven hoe de zoekopdracht wordt uitgevoerd.

– of –

Default om een lege matrix te retourneren.

Retouren

Een matrix van MethodInfo objecten die alle methoden vertegenwoordigen die zijn gedefinieerd voor de huidige Type die overeenkomen met de opgegeven bindingsbeperkingen.

– of –

Een lege matrix van het type MethodInfo, als er geen methoden zijn gedefinieerd voor de huidige Type, of als geen van de gedefinieerde methoden overeenkomt met de bindingsbeperkingen.

Implementeringen

Kenmerken

Voorbeelden

In het volgende voorbeeld wordt een klasse gemaakt met twee openbare methoden en één beveiligde methode, wordt een Type object gemaakt dat overeenkomt met MyTypeClass, worden alle openbare en niet-openbare methoden opgehaald en worden hun namen weergegeven.

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

Opmerkingen

Voor het GetMethods(BindingFlags) ophalen van methodegegevens moet het bindingAttr argument ten minste één van en BindingFlags.Instance, samen met ten minste één van BindingFlags.StaticBindingFlags.NonPublic en BindingFlags.Public.

De volgende BindingFlags filtervlagmen kunnen worden gebruikt om te definiëren welke methoden moeten worden opgenomen in de zoekopdracht:

  • Geef op BindingFlags.Instance om exemplaarmethoden op te nemen.

  • Geef BindingFlags.Static op om statische methoden op te nemen.

  • Geef BindingFlags.Public op dat openbare methoden moeten worden opgenomen in de zoekopdracht.

  • Geef op BindingFlags.NonPublic om niet-openbare methoden (dat wil gezegd privé-, interne en beveiligde methoden) op te nemen in de zoekopdracht. Alleen beveiligde en interne methoden op basisklassen worden geretourneerd; privémethoden op basisklassen worden niet geretourneerd.

  • Geef BindingFlags.FlattenHierarchy op dat u statische leden wilt opnemen public in protected de hiërarchie. private Statische leden in overgenomen klassen zijn niet opgenomen.

  • Geef BindingFlags.Default alleen op om een lege MethodInfo matrix te retourneren.

De volgende BindingFlags wijzigingsvlagmen kunnen worden gebruikt om de werking van de zoekopdracht te wijzigen:

  • BindingFlags.DeclaredOnly om alleen de methoden te doorzoeken die zijn gedeclareerd op de Type, niet de methoden die gewoon zijn overgenomen.

Zie System.Reflection.BindingFlags voor meer informatie.

In .NET 6 en eerdere versies retourneert de methode GetMethods geen methoden in een bepaalde volgorde, zoals alfabetische of declaratievolgorde. Uw code mag niet afhankelijk zijn van de volgorde waarin methoden worden geretourneerd, omdat die volgorde varieert. Vanaf .NET 7 is de volgorde echter deterministisch op basis van de volgorde van metagegevens in de assembly.

Als de huidige Type een samengesteld algemeen type vertegenwoordigt, retourneert deze methode de MethodInfo objecten door de typeparameters vervangen door de juiste typeargumenten.

Als de huidige Type een typeparameter vertegenwoordigt in de definitie van een algemeen type of algemene methode, doorzoekt deze methode de methoden van de klassebeperking of de methoden van Object als er geen klassebeperking is.

Zie ook

Van toepassing op