Type.GetMethods Metódus

Definíció

Lekéri az aktuális Typemetódusokat.

Túlterhelések

Name Description
GetMethods(BindingFlags)

Ha egy származtatott osztályban felül van bírálva, a megadott kötési korlátozások használatával megkeresi az aktuálishoz Typedefiniált metódusokat.

GetMethods()

Az aktuális Typenyilvános metódusokat adja vissza.

GetMethods(BindingFlags)

Forrás:
Type.cs
Forrás:
Type.cs
Forrás:
Type.cs
Forrás:
Type.cs
Forrás:
Type.cs

Ha egy származtatott osztályban felül van bírálva, a megadott kötési korlátozások használatával megkeresi az aktuálishoz Typedefiniált metódusokat.

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

Paraméterek

bindingAttr
BindingFlags

A számbavételi értékek bitenkénti kombinációja, amely meghatározza a keresés menetét.

-vagy-

Default üres tömb visszaadásához.

Válaszok

Az aktuálishoz MethodInfo definiált összes metódust képviselő objektumtömbType, amely megfelel a megadott kötési korlátozásoknak.

-vagy-

Üres típusú MethodInfotömb, ha nincs definiálva metódus az aktuálishoz Type, vagy ha egyik definiált metódus sem felel meg a kötési korlátozásoknak.

Megvalósítás

Attribútumok

Példák

Az alábbi példa létrehoz egy osztályt két nyilvános és egy védett metódussal, létrehoz egy Type megfelelő objektumot MyTypeClass, lekéri az összes nyilvános és nem nyilvános metódust, és megjeleníti a nevüket.

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

Megjegyzések

Ahhoz, hogy a GetMethods(BindingFlags) túlterhelés sikeresen lekérje a metódusinformációkat, az bindingAttr argumentumnak tartalmaznia BindingFlags.InstanceBindingFlags.Static kell legalább az egyiket és az egyiket is.BindingFlags.NonPublicBindingFlags.Public

A következő BindingFlags szűrőjelölőkkel határozhatja meg, hogy mely metódusokat vegye fel a keresésbe:

  • Adja meg BindingFlags.Instance , hogy a példány metódusai is szerepeljenek.

  • Adja meg BindingFlags.Static , hogy statikus metódusokat is tartalmazzon.

  • Adja meg BindingFlags.Public , hogy a nyilvános metódusok szerepeljenek a keresésben.

  • Adja meg BindingFlags.NonPublic , hogy nem nyilvános metódusokat (azaz privát, belső és védett metódusokat) is belefoglaljon a keresésbe. A rendszer csak a védett és belső metódusokat adja vissza az alaposztályokon; a rendszer nem ad vissza privát metódusokat az alaposztályokon.

  • Adja meg a BindingFlags.FlattenHierarchy-t, hogy a hierarchiába belefoglalja a public és protected statikus tagokat; az örökölt osztályokban lévő private statikus tagok nem szerepelnek.

  • Adjon meg BindingFlags.Default önállóan egy üres MethodInfo tömb visszaadásához.

A keresés működésének módosításához az alábbi BindingFlags módosító jelzők használhatók:

  • BindingFlags.DeclaredOnly csak a deklarált metódusok keresésére, nem pedig egyszerűen öröklődő Typemetódusokra.

További információért lásd a System.Reflection.BindingFlags jelű részt.

A .NET 6-os és korábbi verzióiban a GetMethods metódus nem ad vissza metódusokat egy adott sorrendben, például betűrendben vagy deklarációs sorrendben. A kód nem függ a metódusok visszaadási sorrendjétől, mert ez a sorrend eltérő. A 7. .NET kezdve azonban a rendezés determinisztikus a szerelvény metaadatainak sorrendje alapján.

Ha az áram Type egy konstruktált általános típust jelöl, ez a metódus az MethodInfo objektumokat a megfelelő típusargumentumokkal helyettesített típusparaméterekkel adja vissza.

Ha az aktuális Type érték egy típusparamétert jelöl egy általános vagy általános metódus definíciójában, ez a metódus megkeresi az osztálykényszer metódusait, vagy annak metódusait Object , ha nincs osztálykényszer.

Lásd még

A következőre érvényes:

GetMethods()

Forrás:
Type.cs
Forrás:
Type.cs
Forrás:
Type.cs
Forrás:
Type.cs
Forrás:
Type.cs

Az aktuális Typenyilvános metódusokat adja vissza.

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

Válaszok

Az aktuálishoz MethodInfodefiniált összes nyilvános metódust képviselő objektumtömbType.

-vagy-

Üres típusú MethodInfotömb, ha az aktuálishoz Typenincs meghatározva nyilvános metódus.

Megvalósítás

Attribútumok

Megjegyzések

A .NET 6-os és korábbi verzióiban a GetMethods metódus nem ad vissza metódusokat egy adott sorrendben, például betűrendben vagy deklarációs sorrendben. A kód nem függ a metódusok visszaadási sorrendjétől, mert ez a sorrend eltérő. A 7. .NET kezdve azonban a rendezés determinisztikus a szerelvény metaadatainak sorrendje alapján.

A konstruktorok nem szerepelnek a hívás által visszaadott metódusok tömbjében. Hozzon létre egy külön hívást a GetConstructors() konstruktor metódusainak lekéréséhez.

Az alábbi táblázat azt mutatja be, hogy egy alaposztály mely tagjait adják vissza a metódusok egy Get típuson való tükrözéskor.

Tagtípus Static Nem statikus
Constructor No No
Field No Yes. A mezők mindig név és aláírás alapján rejthetők el.
Esemény Nem alkalmazható A gyakori típusrendszerszabály az, hogy az öröklés megegyezik a tulajdonságot megvalósító metódusok öröklésével. A tükröződés a tulajdonságokat név és aláírás elrejtéseként kezeli. Lásd az alábbi 2. megjegyzést.
Módszer No Yes. A metódusok (mind a virtuális, mind a nem virtuális) elrejthetők név szerint vagy elrejthetők név és aláírás alapján.
Beágyazott típus No No
Ingatlan Nem alkalmazható A gyakori típusrendszerszabály az, hogy az öröklés megegyezik a tulajdonságot megvalósító metódusok öröklésével. A tükröződés a tulajdonságokat név és aláírás elrejtéseként kezeli. Lásd az alábbi 2. megjegyzést.
  1. A név és aláírás szerinti elrejtés az aláírás összes részét figyelembe veszi, beleértve az egyéni módosítókat, a visszatérési típusokat, a paramétertípusokat, a sentineleket és a nem kezelt hívási konvenciókat. Ez egy bináris összehasonlítás.

  2. A reflexió során a tulajdonságok és események név és szignatúra szerint vannak elrejtve. Ha az alaposztálynak van egy beolvasási és egy beállítási kiegészítővel rendelkező tulajdonsága, de a származtatott osztálynak csak beolvasási kiegészítője van, a származtatott osztály tulajdonsága elrejti az alaposztály tulajdonságát, és nem tudja majd elérni a beállítót az alaposztályban.

  3. Az egyéni attribútumok nem részei a gyakori típusrendszernek.

Note

Konstruktorok és metódusok keresésekor nem hagyhat ki paramétereket. Csak invokáláskor hagyhat ki paramétereket.

Ha az áram Type egy konstruktált általános típust jelöl, ez a metódus az MethodInfo objektumokat a megfelelő típusargumentumokkal helyettesített típusparaméterekkel adja vissza.

Ha az aktuális Type érték egy típusparamétert jelöl egy általános vagy általános metódus definíciójában, ez a metódus megkeresi az osztálykényszer metódusait, vagy annak metódusait Object , ha nincs osztálykényszer.

Lásd még

A következőre érvényes: