Type.GetMethods Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera metody bieżącego Typeobiektu .
Przeciążenia
| Nazwa | Opis |
|---|---|
| GetMethods() |
Zwraca wszystkie publiczne metody bieżącego Typeobiektu . |
| GetMethods(BindingFlags) |
Po zastąpieniu w klasie pochodnej wyszukuje metody zdefiniowane dla bieżącego Typeelementu , używając określonych ograniczeń powiązania. |
GetMethods()
- Źródło:
- Type.cs
- Źródło:
- Type.cs
- Źródło:
- Type.cs
- Źródło:
- Type.cs
- Źródło:
- Type.cs
Zwraca wszystkie publiczne metody bieżącego Typeobiektu .
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()
Zwraca
Tablica MethodInfo obiektów reprezentujących wszystkie metody publiczne zdefiniowane dla bieżącego Typeobiektu .
— lub —
Pusta tablica typu MethodInfo, jeśli dla bieżącego elementu Typenie zdefiniowano żadnych metod publicznych.
Implementuje
- Atrybuty
Uwagi
W .NET 6 i starszych wersjach metoda GetMethods nie zwraca metod w określonej kolejności, takiej jak alfabetyczna lub kolejność deklaracji. Kod nie może zależeć od kolejności zwracania metod, ponieważ ta kolejność jest różna. Jednak począwszy od .NET 7, kolejność jest deterministyczna na podstawie kolejności metadanych w zestawie.
Konstruktory nie są uwzględniane w tablicy metod zwracanych przez to wywołanie. Utwórz oddzielne wywołanie , aby GetConstructors() uzyskać metody konstruktora.
W poniższej tabeli przedstawiono, które elementy członkowskie klasy bazowej są zwracane przez Get metody podczas odzwierciedlania typu.
| Typ członka | Static | Niestatyczny |
|---|---|---|
| Konstruktor | Nie. | Nie. |
| Pole | Nie. | Tak. Pole jest zawsze ukrywane za pomocą nazwy i podpisu. |
| Zdarzenie | Nie dotyczy | Zasadą wspólnego systemu typów jest to, że dziedziczenie jest takie samo jak w przypadku metod implementujących atrybut. Odbicie traktuje właściwości jako hide-by-name-and-signature. Zobacz notatkę 2 poniżej. |
| Metoda | Nie. | Tak. Metoda (zarówno wirtualna, jak i niewirtualna) może być ukrywana według nazwy lub według nazwy i podpisu. |
| Typ zagnieżdżony | Nie. | Nie. |
| Majątek | Nie dotyczy | Zasadą wspólnego systemu typów jest to, że dziedziczenie jest takie samo jak w przypadku metod implementujących atrybut. Odbicie traktuje właściwości jako hide-by-name-and-signature. Zobacz notatkę 2 poniżej. |
Funkcja Hide-by-name-and-signature uwzględnia wszystkie części podpisu, w tym niestandardowe modyfikatory, typy zwracane, typy parametrów, sentinels i niezarządzane konwencje wywoływania. Jest to porównanie binarne.
W przypadku refleksji właściwości i zdarzenia są ukrywane przez nazwę i sygnaturę. Jeśli masz właściwość z akcesorami get i set w klasie bazowej, ale klasa pochodna ma tylko akcesor get, właściwość klasy pochodnej przesłania właściwość klasy bazowej i nie będzie można uzyskać dostępu do metody set w klasie bazowej.
Atrybuty niestandardowe nie są częścią wspólnego systemu typów.
Uwaga / Notatka
Nie można pominąć parametrów podczas wyszukiwania konstruktorów i metod. Podczas wywoływania można pominąć tylko parametry.
Jeśli bieżący Type reprezentuje skonstruowany typ ogólny, ta metoda zwraca MethodInfo obiekty z parametrami typu zastąpionymi przez odpowiednie argumenty typu.
Jeśli bieżący Type reprezentuje parametr typu w definicji typu ogólnego lub metody ogólnej, ta metoda przeszukuje metody ograniczenia klasy lub metody Object , jeśli nie ma ograniczenia klasy.
Zobacz też
Dotyczy
GetMethods(BindingFlags)
- Źródło:
- Type.cs
- Źródło:
- Type.cs
- Źródło:
- Type.cs
- Źródło:
- Type.cs
- Źródło:
- Type.cs
Po zastąpieniu w klasie pochodnej wyszukuje metody zdefiniowane dla bieżącego Typeelementu , używając określonych ograniczeń powiązania.
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()
Parametry
- bindingAttr
- BindingFlags
Bitowa kombinacja wartości wyliczenia określających sposób przeprowadzania wyszukiwania.
— lub —
Default aby zwrócić pustą tablicę.
Zwraca
Tablica MethodInfo obiektów reprezentujących wszystkie metody zdefiniowane dla bieżącego Type , które są zgodne z określonymi ograniczeniami powiązania.
— lub —
Pusta tablica typu MethodInfo, jeśli żadna z metod nie jest zdefiniowana dla bieżącego Typeelementu , lub jeśli żadna ze zdefiniowanych metod nie jest zgodna z ograniczeniami powiązania.
Implementuje
- Atrybuty
Przykłady
Poniższy przykład tworzy klasę z dwiema metodami publicznymi i jedną chronioną Type metodą, tworzy obiekt odpowiadający MyTypeClassmetodom , pobiera wszystkie metody publiczne i inne niż publiczne i wyświetla ich nazwy.
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
Uwagi
GetMethods(BindingFlags) Aby przeciążenie pomyślnie pobrało informacje o metodzie, bindingAttr argument musi zawierać co najmniej jeden BindingFlags.Instance element i BindingFlags.Staticoraz co najmniej jeden BindingFlags.NonPublic z elementów i BindingFlags.Public.
Następujące BindingFlags flagi filtru mogą służyć do definiowania metod do uwzględnienia w wyszukiwaniu:
Określ
BindingFlags.Instance, aby uwzględnić metody wystąpienia.Określ
BindingFlags.Static, aby uwzględnić metody statyczne.Określ
BindingFlags.Public, aby uwzględnić metody publiczne w wyszukiwaniu.Określ
BindingFlags.NonPublic, aby uwzględnić metody inne niż publiczne (czyli metody prywatne, wewnętrzne i chronione) w wyszukiwaniu. Zwracane są tylko metody chronione i wewnętrzne w klasach bazowych; nie są zwracane metody prywatne w klasach bazowych.Określ
BindingFlags.FlattenHierarchy, aby uwzględnićpubliciprotectedstatyczne członków w hierarchii;privatestatyczne członkowie w klasach dziedziczonych nie są uwzględniane.Określ
BindingFlags.Defaultsam, aby zwrócić pustą MethodInfo tablicę.
Następujące BindingFlags flagi modyfikatora mogą służyć do zmiany sposobu działania wyszukiwania:
-
BindingFlags.DeclaredOnlyaby wyszukać tylko metody zadeklarowane w metodzie Type, a nie metody, które zostały po prostu odziedziczone.
Aby uzyskać więcej informacji, zobacz System.Reflection.BindingFlags.
W .NET 6 i starszych wersjach metoda GetMethods nie zwraca metod w określonej kolejności, takiej jak alfabetyczna lub kolejność deklaracji. Kod nie może zależeć od kolejności zwracania metod, ponieważ ta kolejność jest różna. Jednak począwszy od .NET 7, kolejność jest deterministyczna na podstawie kolejności metadanych w zestawie.
Jeśli bieżący Type reprezentuje skonstruowany typ ogólny, ta metoda zwraca MethodInfo obiekty z parametrami typu zastąpionymi przez odpowiednie argumenty typu.
Jeśli bieżący Type reprezentuje parametr typu w definicji typu ogólnego lub metody ogólnej, ta metoda przeszukuje metody ograniczenia klasy lub metody Object , jeśli nie ma ograniczenia klasy.
Zobacz też
- MethodInfo
- BindingFlags
- DefaultBinder
- GetMethod(String, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])