Bagikan melalui


Type.GetMember Metode

Definisi

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.
  1. 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.

  2. 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.

  3. 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

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.Instance atau BindingFlags.Static untuk mendapatkan pengembalian.

  • Tentukan BindingFlags.Public untuk menyertakan anggota publik dalam pencarian.

  • Tentukan BindingFlags.NonPublic untuk menyertakan anggota non-publik (yaitu, privat, internal, dan anggota yang dilindungi) dalam pencarian.

  • Tentukan BindingFlags.FlattenHierarchy untuk menyertakan public dan protected anggota statis dalam hierarki ke atas; anggota statis seperti private di kelas yang diwariskan tidak disertakan.

Bendera pengubah berikut BindingFlags dapat digunakan untuk mengubah cara kerja pencarian:

  • BindingFlags.IgnoreCase untuk mengabaikan kasus name.

  • BindingFlags.DeclaredOnly untuk 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

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.Instance atau BindingFlags.Static untuk mendapatkan pengembalian.

  • Tentukan BindingFlags.Public untuk menyertakan anggota publik dalam pencarian.

  • Tentukan BindingFlags.NonPublic untuk menyertakan anggota non-publik (yaitu, privat, internal, dan anggota yang dilindungi) dalam pencarian.

  • Tentukan BindingFlags.FlattenHierarchy untuk menyertakan public dan protected anggota statis dalam hierarki ke atas; anggota statis seperti private di kelas yang diwariskan tidak disertakan.

Bendera pengubah berikut BindingFlags dapat digunakan untuk mengubah cara kerja pencarian:

  • BindingFlags.IgnoreCase untuk mengabaikan kasus name.

  • BindingFlags.DeclaredOnly untuk 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

Berlaku untuk