Type.GetMember 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 anggota yang ditentukan dari .Type
Overload
| Nama | Deskripsi |
|---|---|
| GetMember(String) |
Mencari anggota publik dengan nama yang ditentukan. |
| GetMember(String, BindingFlags) |
Mencari anggota yang ditentukan, menggunakan batasan pengikatan yang ditentukan. |
| GetMember(String, MemberTypes, BindingFlags) |
Mencari anggota yang ditentukan dari jenis anggota yang ditentukan, menggunakan batasan pengikatan yang ditentukan. |
GetMember(String)
- Sumber:
- Type.cs
- Sumber:
- Type.cs
- Sumber:
- Type.cs
- Sumber:
- Type.cs
- Sumber:
- Type.cs
Mencari anggota publik dengan nama yang ditentukan.
public:
cli::array <System::Reflection::MemberInfo ^> ^ GetMember(System::String ^ name);
public:
virtual cli::array <System::Reflection::MemberInfo ^> ^ GetMember(System::String ^ name);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicEvents | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicNestedTypes | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties)]
public System.Reflection.MemberInfo[] GetMember(string name);
public System.Reflection.MemberInfo[] GetMember(string name);
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicEvents | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicNestedTypes | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties)>]
member this.GetMember : string -> System.Reflection.MemberInfo[]
member this.GetMember : string -> System.Reflection.MemberInfo[]
abstract member GetMember : string -> System.Reflection.MemberInfo[]
override this.GetMember : string -> System.Reflection.MemberInfo[]
Public Function GetMember (name As String) As MemberInfo()
Parameter
- name
- String
String yang berisi nama anggota publik yang akan didapatkan.
Mengembalikan
Array MemberInfo objek yang mewakili anggota publik dengan nama yang ditentukan, jika ditemukan; jika tidak, array kosong.
Penerapan
- Atribut
Pengecualian
name adalah null.
Contoh
Contoh berikut menampilkan semua anggota String kelas yang dimulai dengan huruf C.
using System;
using System.Security;
using System.Reflection;
public class MyMemberSample
{
public static void Main()
{
MyMemberSample myClass = new MyMemberSample();
try
{
myClass.GetMemberInfo();
myClass.GetPublicStaticMemberInfo();
myClass.GetPublicInstanceMethodMemberInfo();
}
catch(ArgumentNullException e)
{
Console.WriteLine("ArgumentNullException occurred.");
Console.WriteLine("Source: " + e.Source);
Console.WriteLine("Message: " + e.Message);
}
catch(NotSupportedException e)
{
Console.WriteLine("NotSupportedException occurred.");
Console.WriteLine("Source: " + e.Source);
Console.WriteLine("Message: " + e.Message);
}
catch(SecurityException e)
{
Console.WriteLine("SecurityException occurred.");
Console.WriteLine("Source: " + e.Source);
Console.WriteLine("Message: " + e.Message);
}
catch(Exception e)
{
Console.WriteLine("Exception occurred.");
Console.WriteLine("Source: " + e.Source);
Console.WriteLine("Message: " + e.Message);
}
}
public void GetMemberInfo()
{
String myString = "GetMember_String";
Type myType = myString.GetType();
// Get the members for myString starting with the letter C.
MemberInfo[] myMembers = myType.GetMember("C*");
if(myMembers.Length > 0)
{
Console.WriteLine("\nThe member(s) starting with the letter C for type {0}:", myType);
for(int index=0; index < myMembers.Length; index++)
Console.WriteLine("Member {0}: {1}", index + 1, myMembers[index].ToString());
}
else
{
Console.WriteLine("No members match the search criteria.");
}
}
open System
open System.Security
open System.Reflection
type MyMemberSample() =
member _.GetMemberInfo() =
let myString = "GetMember_String"
let myType = myString.GetType()
// Get the members for myString starting with the letter C.
let myMembers = myType.GetMember "C*"
if myMembers.Length > 0 then
printfn $"\nThe member(s) starting with the letter C for type {myType}:"
for index = 0 to myMembers.Length - 1 do
printfn $"Member {index + 1}: {myMembers[index]}"
else
printfn "No members match the search criteria."
member _.GetPublicStaticMemberInfo() =
let myString = "GetMember_String_BindingFlag"
let myType = myString.GetType()
// Get the public static members for the class myString starting with the letter C.
let myMembers = myType.GetMember("C*", BindingFlags.Public ||| BindingFlags.Static)
if myMembers.Length > 0 then
printfn $"\nThe public static member(s) starting with the letter C for type {myType}:"
for index = 0 to myMembers.Length - 1 do
printfn $"Member {index + 1}: {myMembers[index]}"
else
printfn "No members match the search criteria."
member _.GetPublicInstanceMethodMemberInfo() =
let myString = "GetMember_String_MemberType_BindingFlag"
let myType = myString.GetType()
// Get the public instance methods for myString starting with the letter C.
let myMembers = myType.GetMember("C*", MemberTypes.Method, BindingFlags.Public ||| BindingFlags.Instance)
if myMembers.Length > 0 then
printfn $"\nThe public instance method(s) starting with the letter C for type {myType}:"
for index = 0 to myMembers.Length - 1 do
printfn $"Member {index + 1}: {myMembers[index]}"
else
printfn "No members match the search criteria."
let myClass = MyMemberSample()
try
myClass.GetMemberInfo()
myClass.GetPublicStaticMemberInfo()
myClass.GetPublicInstanceMethodMemberInfo()
with
| :? ArgumentNullException as e ->
printfn "ArgumentNullException occurred."
printfn $"Source: {e.Source}"
printfn $"Message: {e.Message}"
| :? NotSupportedException as e ->
printfn $"NotSupportedException occurred."
printfn $"Source: {e.Source}"
printfn $"Message: {e.Message}"
| :? SecurityException as e ->
printfn "SecurityException occurred."
printfn $"Source: {e.Source}"
printfn $"Message: {e.Message}"
| e ->
printfn "Exception occurred."
printfn $"Source: {e.Source}"
printfn $"Message: {e.Message}"
Imports System.Security
Imports System.Reflection
Public Class MyMemberSample
Public Shared Sub Main()
Dim [myClass] As New MyMemberSample()
Try
[myClass].GetMemberInfo()
[myClass].GetPublicStaticMemberInfo()
[myClass].GetPublicInstanceMethodMemberInfo()
Catch e As ArgumentNullException
Console.WriteLine("ArgumentNullException occurred.")
Console.WriteLine(("Source: " + e.Source))
Console.WriteLine(("Message: " + e.Message))
Catch e As NotSupportedException
Console.WriteLine("NotSupportedException occurred.")
Console.WriteLine(("Source: " + e.Source))
Console.WriteLine(("Message: " + e.Message))
Catch e As SecurityException
Console.WriteLine("SecurityException occurred.")
Console.WriteLine(("Source: " + e.Source))
Console.WriteLine(("Message: " + e.Message))
Catch e As Exception
Console.WriteLine("Exception occurred.")
Console.WriteLine(("Source: " + e.Source))
Console.WriteLine(("Message: " + e.Message))
End Try
End Sub
Public Sub GetMemberInfo()
Dim myString As [String] = "GetMember_String"
Dim myType As Type = myString.GetType()
' Get the members for myString starting with the letter C.
Dim myMembers As MemberInfo() = myType.GetMember("C*")
If myMembers.Length > 0 Then
Console.WriteLine(ControlChars.Cr + "The member(s) starting with the letter C for type {0}:", myType)
Dim index As Integer
For index = 0 To myMembers.Length - 1
Console.WriteLine("Member {0}: {1}", index + 1, myMembers(index).ToString())
Next index
Else
Console.WriteLine("No members match the search criteria.")
End If
End Sub
Keterangan
Pencarian name bersifat sensitif huruf besar/kecil. Pencarian mencakup anggota instans publik statis dan publik.
Anggota mencakup properti, metode, bidang, peristiwa, dan sebagainya.
Dalam .NET 6 dan versi yang lebih lama, GetMember metode tidak mengembalikan anggota dalam urutan tertentu, seperti urutan alfabet atau deklarasi. Kode Anda tidak boleh bergantung pada urutan pengembalian anggota, karena pesanan tersebut bervariasi. Namun, dimulai dengan .NET 7, pemesanan bersifat deterministik berdasarkan urutan metadata di rakitan.
Overload metode ini tidak akan menemukan penginisialisasi kelas (konstruktor statis). Untuk menemukan penginisialisasi kelas, gunakan kelebihan beban yang mengambil BindingFlags, dan menentukan | BindingFlags.NonPublicBindingFlags.Static(BindingFlags.StaticOrBindingFlags.NonPublic di Visual Basic). Anda juga bisa mendapatkan penginisialisasi kelas menggunakan TypeInitializer properti .
Tabel berikut menunjukkan anggota-anggota kelas dasar yang dikembalikan oleh metode-metode Get ketika mencerminkan tipe.
| Tipe Anggota | Static | Tidak Statis |
|---|---|---|
| Constructor | No | No |
| Ladang | No | Ya. Bidang selalu disembunyikan berdasarkan nama dan tanda tangan. |
| Event | 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 | No | Ya. Metode (baik virtual maupun non-virtual) dapat disembunyikan berdasarkan nama atau berdasarkan nama dan tanda tangan. |
| Tipe Berlapis | No | No |
| Harta benda | 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 komponen tanda tangan, termasuk modifikasi khusus, tipe pengembalian, tipe parameter, sentinel, dan konvensi pemanggilan yang tidak dikelola. Ini adalah perbandingan biner.
Untuk refleksi, sifat dan kejadian disembunyikan berdasarkan nama dan tanda tangan. 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.
Jika saat ini Type mewakili jenis generik yang dibangun, metode ini mengembalikan MemberInfo 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 anggota batasan kelas, atau anggota jika tidak ada batasan Object kelas.
Nota
Untuk metode generik, jangan sertakan argumen jenis dalam name. Misalnya, kode GetMember("MyMethod<int>") C# mencari anggota dengan nama teks "MyMethod<int>", daripada untuk metode bernama MyMethod yang memiliki satu argumen generik jenis int.
Lihat juga
- MemberInfo
- String
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)
Berlaku untuk
GetMember(String, BindingFlags)
- Sumber:
- Type.cs
- Sumber:
- Type.cs
- Sumber:
- Type.cs
- Sumber:
- Type.cs
- Sumber:
- Type.cs
Mencari anggota yang ditentukan, menggunakan batasan pengikatan yang ditentukan.
public:
virtual cli::array <System::Reflection::MemberInfo ^> ^ GetMember(System::String ^ name, System::Reflection::BindingFlags bindingAttr);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicEvents | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicNestedTypes | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicProperties | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicEvents | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicNestedTypes | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties)]
public virtual System.Reflection.MemberInfo[] GetMember(string name, System.Reflection.BindingFlags bindingAttr);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)]
public virtual System.Reflection.MemberInfo[] GetMember(string name, System.Reflection.BindingFlags bindingAttr);
public virtual System.Reflection.MemberInfo[] GetMember(string name, System.Reflection.BindingFlags bindingAttr);
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicEvents | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicNestedTypes | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicProperties | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicEvents | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicNestedTypes | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties)>]
abstract member GetMember : string * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
override this.GetMember : string * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)>]
abstract member GetMember : string * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
override this.GetMember : string * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
abstract member GetMember : string * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
override this.GetMember : string * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
Public Overridable Function GetMember (name As String, bindingAttr As BindingFlags) As MemberInfo()
Parameter
- name
- String
String yang berisi nama anggota yang akan didapatkan.
- bindingAttr
- BindingFlags
Kombinasi bitwise dari nilai enumerasi yang menentukan bagaimana pencarian dilakukan.
-atau-
Default untuk mengembalikan array kosong.
Mengembalikan
Array MemberInfo objek yang mewakili anggota publik dengan nama yang ditentukan, jika ditemukan; jika tidak, array kosong.
Penerapan
- Atribut
Pengecualian
name adalah null.
Contoh
Contoh berikut menampilkan semua anggota statis publik kelas myString yang dimulai dengan huruf C.
public void GetPublicStaticMemberInfo()
{
String myString = "GetMember_String_BindingFlag";
Type myType = myString.GetType();
// Get the public static members for the class myString starting with the letter C.
MemberInfo[] myMembers = myType.GetMember("C*",
BindingFlags.Public |BindingFlags.Static);
if(myMembers.Length > 0)
{
Console.WriteLine("\nThe public static member(s) starting with the letter C for type {0}:", myType);
for(int index=0; index < myMembers.Length; index++)
Console.WriteLine("Member {0}: {1}", index + 1, myMembers[index].ToString());
}
else
{
Console.WriteLine("No members match the search criteria.");
}
}
member _.GetPublicStaticMemberInfo() =
let myString = "GetMember_String_BindingFlag"
let myType = myString.GetType()
// Get the public static members for the class myString starting with the letter C.
let myMembers = myType.GetMember("C*", BindingFlags.Public ||| BindingFlags.Static)
if myMembers.Length > 0 then
printfn $"\nThe public static member(s) starting with the letter C for type {myType}:"
for index = 0 to myMembers.Length - 1 do
printfn $"Member {index + 1}: {myMembers[index]}"
else
printfn "No members match the search criteria."
Public Sub GetPublicStaticMemberInfo()
Dim myString As [String] = "GetMember_String_BindingFlag"
Dim myType As Type = myString.GetType()
' Get the public static members for the class myString starting with the letter C.
Dim myMembers As MemberInfo() = myType.GetMember("C*", BindingFlags.Public Or BindingFlags.Static)
If myMembers.Length > 0 Then
Console.WriteLine(ControlChars.Cr + "The public static member(s) starting with the letter C for type {0}:", myType)
Dim index As Integer
For index = 0 To myMembers.Length - 1
Console.WriteLine("Member {0}: {1}", index + 1, myMembers(index).ToString())
Next index
Else
Console.WriteLine("No members match the search criteria.")
End If
End Sub
Keterangan
Metode ini dapat ditimpa oleh kelas turunan.
Anggota mencakup properti, metode, bidang, peristiwa, dan sebagainya.
Dalam .NET 6 dan versi yang lebih lama, GetMember metode tidak mengembalikan anggota dalam urutan tertentu, seperti urutan alfabet atau deklarasi. Kode Anda tidak boleh bergantung pada urutan pengembalian anggota, karena pesanan tersebut bervariasi. Namun, dimulai dengan .NET 7, pemesanan bersifat deterministik berdasarkan urutan metadata di rakitan.
Bendera filter berikut BindingFlags dapat digunakan untuk menentukan anggota mana yang akan disertakan dalam pencarian:
Anda harus menentukan salah satu
BindingFlags.InstanceatauBindingFlags.Staticuntuk mendapatkan pengembalian.Tentukan
BindingFlags.Publicuntuk menyertakan anggota publik dalam pencarian.Tentukan
BindingFlags.NonPublicuntuk menyertakan anggota non-publik (yaitu, privat, internal, dan anggota yang dilindungi) dalam pencarian.Tentukan
BindingFlags.FlattenHierarchyuntuk menyertakanpublicdanprotectedanggota statis dalam hierarki ke atas; anggota statis sepertiprivatedi kelas yang diwariskan tidak disertakan.
Bendera pengubah berikut BindingFlags dapat digunakan untuk mengubah cara kerja pencarian:
BindingFlags.IgnoreCaseuntuk mengabaikan kasusname.BindingFlags.DeclaredOnlyuntuk mencari hanya anggota yang dinyatakan pada Type, bukan anggota yang hanya diwariskan.
Lihat System.Reflection.BindingFlags untuk informasi lebih lanjut.
Untuk mendapatkan penginisialisasi kelas (konstruktor statis) menggunakan metode ini kelebihan beban, Anda harus menentukan "konstruktor statis" untuk name, dan BindingFlags.Static | BindingFlags.NonPublic (OrBindingFlags.StaticBindingFlags.NonPublic di Visual Basic) untuk .bindingAttr Anda juga bisa mendapatkan penginisialisasi kelas menggunakan TypeInitializer properti .
Jika saat ini Type mewakili jenis generik yang dibangun, metode ini mengembalikan MemberInfo 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 anggota batasan kelas, atau anggota jika tidak ada batasan Object kelas.
Nota
Untuk metode generik, jangan sertakan argumen jenis dalam name. Misalnya, kode GetMember("MyMethod<int>") C# mencari anggota dengan nama teks "MyMethod<int>", daripada untuk metode bernama MyMethod yang memiliki satu argumen generik jenis int.
Lihat juga
- MemberInfo
- String
- BindingFlags
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)
Berlaku untuk
GetMember(String, MemberTypes, BindingFlags)
- Sumber:
- Type.cs
- Sumber:
- Type.cs
- Sumber:
- Type.cs
- Sumber:
- Type.cs
- Sumber:
- Type.cs
Mencari anggota yang ditentukan dari jenis anggota yang ditentukan, menggunakan batasan pengikatan yang ditentukan.
public:
virtual cli::array <System::Reflection::MemberInfo ^> ^ GetMember(System::String ^ name, System::Reflection::MemberTypes type, System::Reflection::BindingFlags bindingAttr);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicEvents | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicNestedTypes | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicProperties | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicEvents | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicNestedTypes | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties)]
public virtual System.Reflection.MemberInfo[] GetMember(string name, System.Reflection.MemberTypes type, System.Reflection.BindingFlags bindingAttr);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)]
public virtual System.Reflection.MemberInfo[] GetMember(string name, System.Reflection.MemberTypes type, System.Reflection.BindingFlags bindingAttr);
public virtual System.Reflection.MemberInfo[] GetMember(string name, System.Reflection.MemberTypes type, System.Reflection.BindingFlags bindingAttr);
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicEvents | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicNestedTypes | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicProperties | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicEvents | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicNestedTypes | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties)>]
abstract member GetMember : string * System.Reflection.MemberTypes * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
override this.GetMember : string * System.Reflection.MemberTypes * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)>]
abstract member GetMember : string * System.Reflection.MemberTypes * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
override this.GetMember : string * System.Reflection.MemberTypes * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
abstract member GetMember : string * System.Reflection.MemberTypes * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
override this.GetMember : string * System.Reflection.MemberTypes * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
Public Overridable Function GetMember (name As String, type As MemberTypes, bindingAttr As BindingFlags) As MemberInfo()
Parameter
- name
- String
String yang berisi nama anggota yang akan didapatkan.
- type
- MemberTypes
Nilai yang akan dicari.
- bindingAttr
- BindingFlags
Kombinasi bitwise dari nilai enumerasi yang menentukan bagaimana pencarian dilakukan.
-atau-
Default untuk mengembalikan array kosong.
Mengembalikan
Array MemberInfo objek yang mewakili anggota publik dengan nama yang ditentukan, jika ditemukan; jika tidak, array kosong.
Penerapan
- Atribut
Pengecualian
name adalah null.
Kelas turunan harus memberikan implementasi.
Contoh
Contoh berikut menampilkan semua metode myString kelas yang dimulai dengan huruf C.
public void GetPublicInstanceMethodMemberInfo()
{
String myString = "GetMember_String_MemberType_BindingFlag";
Type myType = myString.GetType();
// Get the public instance methods for myString starting with the letter C.
MemberInfo[] myMembers = myType.GetMember("C*", MemberTypes.Method,
BindingFlags.Public | BindingFlags.Instance);
if(myMembers.Length > 0)
{
Console.WriteLine("\nThe public instance method(s) starting with the letter C for type {0}:", myType);
for(int index=0; index < myMembers.Length; index++)
Console.WriteLine("Member {0}: {1}", index + 1, myMembers[index].ToString());
}
else
{
Console.WriteLine("No members match the search criteria.");
}
}
}
member _.GetPublicInstanceMethodMemberInfo() =
let myString = "GetMember_String_MemberType_BindingFlag"
let myType = myString.GetType()
// Get the public instance methods for myString starting with the letter C.
let myMembers = myType.GetMember("C*", MemberTypes.Method, BindingFlags.Public ||| BindingFlags.Instance)
if myMembers.Length > 0 then
printfn $"\nThe public instance method(s) starting with the letter C for type {myType}:"
for index = 0 to myMembers.Length - 1 do
printfn $"Member {index + 1}: {myMembers[index]}"
else
printfn "No members match the search criteria."
Public Sub GetPublicInstanceMethodMemberInfo()
Dim myString As [String] = "GetMember_String_MemberType_BindingFlag"
Dim myType As Type = myString.GetType()
' Get the public instance methods for myString starting with the letter C.
Dim myMembers As MemberInfo() = myType.GetMember("C*", MemberTypes.Method, BindingFlags.Public Or BindingFlags.Instance)
If myMembers.Length > 0 Then
Console.WriteLine(ControlChars.Cr + "The public instance method(s) starting with the letter C for type {0}:", myType)
Dim index As Integer
For index = 0 To myMembers.Length - 1
Console.WriteLine("Member {0}: {1}", index + 1, myMembers(index).ToString())
Next index
Else
Console.WriteLine("No members match the search criteria.")
End If
End Sub
End Class
Keterangan
Anggota mencakup properti, metode, bidang, peristiwa, dan sebagainya.
Dalam .NET 6 dan versi yang lebih lama, GetMember metode tidak mengembalikan anggota dalam urutan tertentu, seperti urutan alfabet atau deklarasi. Kode Anda tidak boleh bergantung pada urutan pengembalian anggota, karena pesanan tersebut bervariasi. Namun, dimulai dengan .NET 7, pemesanan bersifat deterministik berdasarkan urutan metadata di rakitan.
Bendera filter berikut BindingFlags dapat digunakan untuk menentukan anggota mana yang akan disertakan dalam pencarian:
Anda harus menentukan salah satu
BindingFlags.InstanceatauBindingFlags.Staticuntuk mendapatkan pengembalian.Tentukan
BindingFlags.Publicuntuk menyertakan anggota publik dalam pencarian.Tentukan
BindingFlags.NonPublicuntuk menyertakan anggota non-publik (yaitu, privat, internal, dan anggota yang dilindungi) dalam pencarian.Tentukan
BindingFlags.FlattenHierarchyuntuk menyertakanpublicdanprotectedanggota statis dalam hierarki ke atas; anggota statis sepertiprivatedi kelas yang diwariskan tidak disertakan.
Bendera pengubah berikut BindingFlags dapat digunakan untuk mengubah cara kerja pencarian:
BindingFlags.IgnoreCaseuntuk mengabaikan kasusname.BindingFlags.DeclaredOnlyuntuk mencari hanya anggota yang dinyatakan pada Type, bukan anggota yang hanya diwariskan.
Lihat System.Reflection.BindingFlags untuk informasi lebih lanjut.
Untuk mendapatkan penginisialisasi kelas (konstruktor statis) menggunakan metode ini kelebihan beban, Anda harus menentukan "konstruktor statis" untuk , untuk , dan BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.NonPublicBindingFlags.StaticOr di Visual Basic) untuk .bindingAttrtypeMemberTypes.Constructorname Anda juga bisa mendapatkan penginisialisasi kelas menggunakan TypeInitializer properti .
Jika saat ini Type mewakili jenis generik yang dibangun, metode ini mengembalikan MemberInfo 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 anggota batasan kelas, atau anggota jika tidak ada batasan Object kelas.
Nota
Untuk metode generik, jangan sertakan argumen jenis dalam name. Misalnya, kode GetMember("MyMethod<int>") C# mencari anggota dengan nama teks "MyMethod<int>", daripada untuk metode bernama MyMethod yang memiliki satu argumen generik jenis int.
Lihat juga
- MemberInfo
- String
- BindingFlags
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)