Aracılığıyla paylaş


Type.GetMember Yöntem

Tanım

Geçerli Typeöğesinin belirtilen üyelerini alır.

Aşırı Yüklemeler

Name Description
GetMember(String)

Belirtilen ada sahip genel üyeleri arar.

GetMember(String, BindingFlags)

Belirtilen bağlama kısıtlamalarını kullanarak belirtilen üyeleri arar.

GetMember(String, MemberTypes, BindingFlags)

Belirtilen bağlama kısıtlamalarını kullanarak belirtilen üye türünün belirtilen üyelerini arar.

GetMember(String)

Kaynak:
Type.cs
Kaynak:
Type.cs
Kaynak:
Type.cs
Kaynak:
Type.cs
Kaynak:
Type.cs

Belirtilen ada sahip genel üyeleri arar.

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

Parametreler

name
String

Alınacak ortak üyelerin adını içeren dize.

Döndürülenler

Belirtilen ada sahip ortak üyeleri temsil eden bir nesne dizisi MemberInfo ; aksi takdirde boş bir dizi.

Uygulamalar

Öznitelikler

Özel durumlar

name, null'e eşittir.

Örnekler

Aşağıdaki örnek, C harfiyle başlayan sınıfın String tüm üyelerini görüntüler.


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

Açıklamalar

name araması büyük/küçük harfe duyarlıdır. Arama, genel statik ve genel örnek üyelerini içerir.

Üyeler özellikler, yöntemler, alanlar, olaylar vb. içerir.

.NET 6 ve önceki sürümlerinde, GetMember yöntemi üyeleri alfabetik veya bildirim sırası gibi belirli bir sırada döndürmez. Kodunuzun üyelerin döndürülme sırasına bağlı olmaması gerekir, çünkü bu sipariş değişir. Bununla birlikte, .NET 7'den başlayarak sıralama, derlemedeki meta veri sıralamasını temel alarak belirleyicidir.

Bu yöntem aşırı yüklemesi sınıf başlatıcılarını (statik oluşturucu) bulamaz. Sınıf başlatıcılarını bulmak için, öğesini alan BindingFlagsve ( Visual Basic'te)BindingFlags.StaticBindingFlags.NonPublicOr belirten BindingFlags.Static | BindingFlags.NonPublic bir aşırı yükleme kullanın. Ayrıca özelliğini kullanarak sınıf başlatıcısını TypeInitializer da alabilirsiniz.

Aşağıdaki tabloda, bir türe yansıtılırken yöntemler tarafından döndürülen temel sınıf üyeleri gösterilmektedir.

Üye Türü Static Statik Olmayan
Yapıcı Hayır Hayır
Alan Hayır Evet. Alan her zaman isim ve imzaya göre gizli olur.
Etkinlik Uygulanamaz Yaygın tür sistemi kuralı, özniteliği uygulayan yöntemlerdeki devralma ile aynıdır. Yansıma, özellikleri ada ve imzaya göre gizle olarak ele alır. Aşağıdaki 2. nota bakın.
Yöntem Hayır Evet. Bir yöntem (hem sanal hem de sanal olmayan) isim odaklı gizleme veya isim ve imza odaklı gizleme olabilir.
İç İçe Yerleştirilmiş Tür Hayır Hayır
Mülkiyet Uygulanamaz Yaygın tür sistemi kuralı, özniteliği uygulayan yöntemlerdeki devralma ile aynıdır. Yansıma, özellikleri ada ve imzaya göre gizle olarak ele alır. Aşağıdaki 2. nota bakın.
  1. Ad ve imzaya göre gizleme, özel değiştiriciler, dönüş türleri, parametre türleri, sentineller ve yönetilmeyen çağırma kuralları dahil olmak üzere, imzanın tüm parçalarını dikkate alır. Bu ikili karşılaştırmadır.

  2. Yansıma için, özellikler ve olaylar ada ve imzaya göre gizlenir. Temel sınıfta hem get hem de set erişimcisine sahip bir özelliğiniz varsa, ancak türetilen sınıfın yalnızca bir get erişimcisi varsa, türetilmiş sınıf özelliği temel sınıf özelliğini gizler ve temel sınıfta ayarlayıcıya erişemezsiniz.

  3. Özel öznitelikler ortak tür sisteminin bir parçası değildir.

Geçerli Type yapılandırılmış bir genel türü temsil ediyorsa, bu yöntem tür parametrelerini uygun tür bağımsız değişkenleriyle değiştirerek MemberInfo'i döndürür.

Geçerli Type , genel bir tür veya genel yöntemin tanımında tür parametresini temsil ederse, bu yöntem sınıf kısıtlamasının üyelerini veya sınıf kısıtlaması yoksa öğesinin Object üyelerini arar.

Uyarı

Genel yöntemler için, türü bağımsız değişkenlerini içinde eklemeyin name. Örneğin, C# kodu GetMember("MyMethod<int>") türünde tek bir genel bağımsız değişkeni intolan adlı MyMethod bir yöntem yerine "MyMethod<int>" metin adına sahip bir üyeyi arar.

Ayrıca bkz.

Şunlara uygulanır

GetMember(String, BindingFlags)

Kaynak:
Type.cs
Kaynak:
Type.cs
Kaynak:
Type.cs
Kaynak:
Type.cs
Kaynak:
Type.cs

Belirtilen bağlama kısıtlamalarını kullanarak belirtilen üyeleri arar.

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

Parametreler

name
String

Alınacak üyelerin adını içeren dize.

bindingAttr
BindingFlags

Aramanın nasıl yapıldığını belirten numaralandırma değerlerinin bit düzeyinde birleşimi.

-veya-

Default boş bir dizi döndürmek için.

Döndürülenler

Belirtilen ada sahip ortak üyeleri temsil eden bir nesne dizisi MemberInfo ; aksi takdirde boş bir dizi.

Uygulamalar

Öznitelikler

Özel durumlar

name, null'e eşittir.

Örnekler

Aşağıdaki örnek, C harfiyle başlayan sınıfın myString tüm genel statik üyelerini görüntüler.

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

Açıklamalar

Bu yöntem türetilmiş bir sınıf tarafından geçersiz kılınabilir.

Üyeler özellikler, yöntemler, alanlar, olaylar vb. içerir.

.NET 6 ve önceki sürümlerinde, GetMember yöntemi üyeleri alfabetik veya bildirim sırası gibi belirli bir sırada döndürmez. Kodunuzun üyelerin döndürülme sırasına bağlı olmaması gerekir, çünkü bu sipariş değişir. Bununla birlikte, .NET 7'den başlayarak sıralama, derlemedeki meta veri sıralamasını temel alarak belirleyicidir.

Aşağıdaki BindingFlags filtre bayrakları, aramaya hangi üyelerin dahil edilebileceğini tanımlamak için kullanılabilir:

  • İade almak için ya BindingFlags.Instance ya da BindingFlags.Static belirtmelisiniz.

  • Genel üyeleri aramaya dahil etmek için belirtin BindingFlags.Public .

  • Genel olmayan üyeleri (özel, iç ve korumalı üyeler) aramaya dahil etmek için belirtin BindingFlags.NonPublic .

  • BelirtinBindingFlags.FlattenHierarchy: public ve protected statik üyeleri hiyerarşiye eklemek için; türetilmiş sınıflardaki private statik üyeler dahil edilmez.

Aramanın çalışma biçimini değiştirmek için aşağıdaki BindingFlags değiştirici bayraklar kullanılabilir:

  • BindingFlags.IgnoreCase öğesinin büyük/küçük harf durumunu nameyoksaymak için.

  • BindingFlags.DeclaredOnly yalnızca üzerinde Typebildirilen üyeleri aramak için yalnızca devralınan üyeleri aramaz.

Daha fazla bilgi için bkz. System.Reflection.BindingFlags.

Bu yöntem aşırı yüklemesini kullanarak sınıf başlatıcısını (statik oluşturucu) almak için için , ve | BindingFlags.StaticBindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic Visual Basic'te) için namebindingAttr"statik oluşturucu" belirtmeniz gerekir. Ayrıca özelliğini kullanarak sınıf başlatıcısını TypeInitializer da alabilirsiniz.

Geçerli Type yapılandırılmış bir genel türü temsil ediyorsa, bu yöntem tür parametrelerini uygun tür bağımsız değişkenleriyle değiştirerek MemberInfo'i döndürür.

Geçerli Type , genel bir tür veya genel yöntemin tanımında tür parametresini temsil ederse, bu yöntem sınıf kısıtlamasının üyelerini veya sınıf kısıtlaması yoksa öğesinin Object üyelerini arar.

Uyarı

Genel yöntemler için, türü bağımsız değişkenlerini içinde eklemeyin name. Örneğin, C# kodu GetMember("MyMethod<int>") türünde tek bir genel bağımsız değişkeni intolan adlı MyMethod bir yöntem yerine "MyMethod<int>" metin adına sahip bir üyeyi arar.

Ayrıca bkz.

Şunlara uygulanır

GetMember(String, MemberTypes, BindingFlags)

Kaynak:
Type.cs
Kaynak:
Type.cs
Kaynak:
Type.cs
Kaynak:
Type.cs
Kaynak:
Type.cs

Belirtilen bağlama kısıtlamalarını kullanarak belirtilen üye türünün belirtilen üyelerini arar.

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

Parametreler

name
String

Alınacak üyelerin adını içeren dize.

type
MemberTypes

Aranacak değer.

bindingAttr
BindingFlags

Aramanın nasıl yapıldığını belirten numaralandırma değerlerinin bit düzeyinde birleşimi.

-veya-

Default boş bir dizi döndürmek için.

Döndürülenler

Belirtilen ada sahip ortak üyeleri temsil eden bir nesne dizisi MemberInfo ; aksi takdirde boş bir dizi.

Uygulamalar

Öznitelikler

Özel durumlar

name, null'e eşittir.

Türetilmiş bir sınıf bir uygulama sağlamalıdır.

Örnekler

Aşağıdaki örnek, C harfiyle başlayan sınıfın myString tüm yöntemlerini görüntüler.

    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

Açıklamalar

Üyeler özellikler, yöntemler, alanlar, olaylar vb. içerir.

.NET 6 ve önceki sürümlerinde, GetMember yöntemi üyeleri alfabetik veya bildirim sırası gibi belirli bir sırada döndürmez. Kodunuzun üyelerin döndürülme sırasına bağlı olmaması gerekir, çünkü bu sipariş değişir. Bununla birlikte, .NET 7'den başlayarak sıralama, derlemedeki meta veri sıralamasını temel alarak belirleyicidir.

Aşağıdaki BindingFlags filtre bayrakları, aramaya hangi üyelerin dahil edilebileceğini tanımlamak için kullanılabilir:

  • İade almak için ya BindingFlags.Instance ya da BindingFlags.Static belirtmelisiniz.

  • Genel üyeleri aramaya dahil etmek için belirtin BindingFlags.Public .

  • Genel olmayan üyeleri (özel, iç ve korumalı üyeler) aramaya dahil etmek için belirtin BindingFlags.NonPublic .

  • BelirtinBindingFlags.FlattenHierarchy: public ve protected statik üyeleri hiyerarşiye eklemek için; türetilmiş sınıflardaki private statik üyeler dahil edilmez.

Aramanın çalışma biçimini değiştirmek için aşağıdaki BindingFlags değiştirici bayraklar kullanılabilir:

  • BindingFlags.IgnoreCase öğesinin büyük/küçük harf durumunu nameyoksaymak için.

  • BindingFlags.DeclaredOnly yalnızca üzerinde Typebildirilen üyeleri aramak için yalnızca devralınan üyeleri aramaz.

Daha fazla bilgi için bkz. System.Reflection.BindingFlags.

Bu yöntem aşırı yüklemesini kullanarak sınıf başlatıcısını (statik oluşturucu) almak için için için , typeMemberTypes.Constructor ve | BindingFlags.NonPublicBindingFlags.Static(BindingFlags.StaticOrBindingFlags.NonPublic Visual Basic'te) için namebindingAttr"statik oluşturucu" belirtmeniz gerekir. Ayrıca özelliğini kullanarak sınıf başlatıcısını TypeInitializer da alabilirsiniz.

Geçerli Type yapılandırılmış bir genel türü temsil ediyorsa, bu yöntem tür parametrelerini uygun tür bağımsız değişkenleriyle değiştirerek MemberInfo'i döndürür.

Geçerli Type , genel bir tür veya genel yöntemin tanımında tür parametresini temsil ederse, bu yöntem sınıf kısıtlamasının üyelerini veya sınıf kısıtlaması yoksa öğesinin Object üyelerini arar.

Uyarı

Genel yöntemler için, türü bağımsız değişkenlerini içinde eklemeyin name. Örneğin, C# kodu GetMember("MyMethod<int>") türünde tek bir genel bağımsız değişkeni intolan adlı MyMethod bir yöntem yerine "MyMethod<int>" metin adına sahip bir üyeyi arar.

Ayrıca bkz.

Şunlara uygulanır