Type.GetMethods Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mendapatkan metode dari saat ini Type.
Overload
GetMethods(BindingFlags) |
Ketika ditimpa di kelas turunan, cari metode yang ditentukan untuk saat ini Type, menggunakan batasan pengikatan yang ditentukan. |
GetMethods() |
Mengembalikan semua metode publik dari saat ini Type. |
GetMethods(BindingFlags)
- Sumber:
- Type.cs
- Sumber:
- Type.cs
- Sumber:
- Type.cs
Ketika ditimpa di kelas turunan, cari metode yang ditentukan untuk saat ini Type, menggunakan batasan pengikatan yang ditentukan.
public:
abstract cli::array <System::Reflection::MethodInfo ^> ^ GetMethods(System::Reflection::BindingFlags bindingAttr);
public abstract System.Reflection.MethodInfo[] GetMethods (System.Reflection.BindingFlags bindingAttr);
abstract member GetMethods : System.Reflection.BindingFlags -> System.Reflection.MethodInfo[]
Public MustOverride Function GetMethods (bindingAttr As BindingFlags) As MethodInfo()
Parameter
- bindingAttr
- BindingFlags
Kombinasi bitwise dari nilai enumerasi yang menentukan bagaimana pencarian dilakukan.
-atau-
Default untuk mengembalikan array kosong.
Mengembalikan
Array MethodInfo objek yang mewakili semua metode yang ditentukan untuk saat ini Type yang cocok dengan batasan pengikatan yang ditentukan.
-atau-
Array kosong dari jenis MethodInfo, jika tidak ada metode yang ditentukan untuk saat ini Type, atau jika tidak ada metode yang ditentukan yang cocok dengan batasan pengikatan.
Penerapan
Contoh
Contoh berikut membuat kelas dengan dua metode publik dan satu metode yang dilindungi, membuat objek yang Type
sesuai dengan MyTypeClass
, mendapatkan semua metode publik dan non-publik, dan menampilkan namanya.
using namespace System;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
// Create a class having two public methods and one protected method.
public ref class MyTypeClass
{
public:
void MyMethods(){}
int MyMethods1()
{
return 3;
}
protected:
String^ MyMethods2()
{
return "hello";
}
};
void DisplayMethodInfo( array<MethodInfo^>^myArrayMethodInfo )
{
// Display information for all methods.
for ( int i = 0; i < myArrayMethodInfo->Length; i++ )
{
MethodInfo^ myMethodInfo = dynamic_cast<MethodInfo^>(myArrayMethodInfo[ i ]);
Console::WriteLine( "\nThe name of the method is {0}.", myMethodInfo->Name );
}
}
int main()
{
Type^ myType = MyTypeClass::typeid;
// Get the public methods.
array<MethodInfo^>^myArrayMethodInfo = myType->GetMethods( static_cast<BindingFlags>(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.
array<MethodInfo^>^myArrayMethodInfo1 = myType->GetMethods( static_cast<BindingFlags>(BindingFlags::NonPublic | BindingFlags::Instance | BindingFlags::DeclaredOnly) );
Console::WriteLine( "\nThe number of protected methods is {0}->", myArrayMethodInfo1->Length );
// Display information for all methods.
DisplayMethodInfo( myArrayMethodInfo1 );
}
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
Keterangan
GetMethods(BindingFlags)
Agar kelebihan beban berhasil mengambil informasi metode, bindingAttr
argumen harus menyertakan setidaknya satu dari BindingFlags.Instance dan BindingFlags.Static, bersama dengan setidaknya satu dari BindingFlags.NonPublic dan BindingFlags.Public.
Bendera filter berikut BindingFlags dapat digunakan untuk menentukan metode mana yang akan disertakan dalam pencarian:
Tentukan
BindingFlags.Instance
untuk menyertakan metode instans.Tentukan
BindingFlags.Static
untuk menyertakan metode statis.Tentukan
BindingFlags.Public
untuk menyertakan metode publik dalam pencarian.Tentukan
BindingFlags.NonPublic
untuk menyertakan metode non-publik (yaitu, privat, internal, dan metode yang dilindungi) dalam pencarian. Hanya metode yang dilindungi dan internal pada kelas dasar yang dikembalikan; metode privat pada kelas dasar tidak dikembalikan.Tentukan
BindingFlags.FlattenHierarchy
untuk menyertakanpublic
danprotected
anggota statis ke hierarki;private
anggota statis di kelas yang diwariskan tidak disertakan.Tentukan
BindingFlags.Default
saja untuk mengembalikan array kosong MethodInfo .
Bendera pengubah berikut BindingFlags dapat digunakan untuk mengubah cara kerja pencarian:
-
BindingFlags.DeclaredOnly
untuk mencari hanya metode yang dideklarasikan pada Type, bukan metode yang hanya diwariskan.
Lihat System.Reflection.BindingFlags untuk informasi lebih lanjut.
Dalam .NET 6 dan versi yang lebih lama, GetMethods metode tidak mengembalikan metode dalam urutan tertentu, seperti urutan alfabet atau deklarasi. Kode Anda tidak boleh bergantung pada urutan pengembalian metode, karena urutan tersebut bervariasi. Namun, dimulai dengan .NET 7, pemesanan bersifat deterministik berdasarkan urutan metadata dalam perakitan.
Jika saat ini Type mewakili jenis generik yang dibangun, metode ini mengembalikan MethodInfo objek dengan parameter jenis yang digantikan oleh argumen jenis yang sesuai.
Jika saat ini Type mewakili parameter jenis dalam definisi jenis generik atau metode generik, metode ini mencari metode batasan kelas, atau metode jika tidak ada batasan Object kelas.
Lihat juga
- MethodInfo
- BindingFlags
- DefaultBinder
- GetMethod(String, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])
Berlaku untuk
GetMethods()
- Sumber:
- Type.cs
- Sumber:
- Type.cs
- Sumber:
- Type.cs
Mengembalikan semua metode publik dari saat ini Type.
public:
cli::array <System::Reflection::MethodInfo ^> ^ GetMethods();
public:
virtual cli::array <System::Reflection::MethodInfo ^> ^ GetMethods();
public System.Reflection.MethodInfo[] GetMethods ();
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()
Mengembalikan
Array MethodInfo objek yang mewakili semua metode publik yang ditentukan untuk saat ini Type.
-atau-
Array kosong dari jenis MethodInfo, jika tidak ada metode publik yang ditentukan untuk saat ini Type.
Penerapan
Keterangan
Dalam .NET 6 dan versi yang lebih lama, GetMethods metode tidak mengembalikan metode dalam urutan tertentu, seperti urutan alfabet atau deklarasi. Kode Anda tidak boleh bergantung pada urutan pengembalian metode, karena urutan tersebut bervariasi. Namun, dimulai dengan .NET 7, pemesanan bersifat deterministik berdasarkan urutan metadata dalam perakitan.
Konstruktor tidak disertakan dalam array metode yang dikembalikan oleh panggilan ini. Lakukan panggilan terpisah untuk GetConstructors()
mendapatkan metode konstruktor.
Tabel berikut menunjukkan anggota kelas dasar apa yang dikembalikan oleh Get
metode saat mencerminkan jenis.
Jenis anggota | Statis | Non-Statis |
---|---|---|
Konstruktor | Tidak | Tidak |
Bidang | Tidak | Ya. Bidang selalu disembunyikan menurut nama dan tanda tangan. |
Kejadian | Tidak berlaku | Aturan sistem jenis umum adalah bahwa pewarisan sama dengan metode yang mengimplementasikan properti . Pantulan memperlakukan properti sebagai hide-by-name-and-signature. Lihat catatan 2 di bawah ini. |
Metode | Tidak | Ya. Metode (virtual dan non-virtual) dapat berupa hide-by-name atau hide-by-name-and-signature. |
Tipe Berlapis | Tidak | Tidak |
Properti | Tidak berlaku | Aturan sistem jenis umum adalah bahwa pewarisan sama dengan metode yang mengimplementasikan properti . Pantulan memperlakukan properti sebagai hide-by-name-and-signature. Lihat catatan 2 di bawah ini. |
Hide-by-name-and-signature mempertimbangkan semua bagian tanda tangan, termasuk pengubah kustom, jenis pengembalian, jenis parameter, sentinel, dan konvensi panggilan yang tidak dikelola. Ini adalah perbandingan biner.
Untuk refleksi, properti dan peristiwa adalah hide-by-name-and-signature. Jika Anda memiliki properti dengan aksesor get dan set di kelas dasar, tetapi kelas turunan hanya memiliki aksesor get, properti kelas turunan menyembunyikan properti kelas dasar, dan Anda tidak akan dapat mengakses setter pada kelas dasar.
Atribut kustom bukan bagian dari sistem jenis umum.
Catatan
Anda tidak dapat menghilangkan parameter saat mencari konstruktor dan metode. Anda hanya dapat menghilangkan parameter saat memanggil.
Jika saat ini Type mewakili jenis generik yang dibangun, metode ini mengembalikan MethodInfo objek dengan parameter jenis yang digantikan oleh argumen jenis yang sesuai.
Jika saat ini Type mewakili parameter jenis dalam definisi jenis generik atau metode generik, metode ini mencari metode batasan kelas, atau metode jika tidak ada batasan Object kelas.