Type.GetMember Methode

Definitie

Hiermee worden de opgegeven leden van de huidige Type.

Overloads

Name Description
GetMember(String)

Hiermee wordt gezocht naar de openbare leden met de opgegeven naam.

GetMember(String, BindingFlags)

Hiermee wordt gezocht naar de opgegeven leden met behulp van de opgegeven bindingsbeperkingen.

GetMember(String, MemberTypes, BindingFlags)

Zoekt naar de opgegeven leden van het opgegeven lidtype, met behulp van de opgegeven bindingsbeperkingen.

GetMember(String)

Hiermee wordt gezocht naar de openbare leden met de opgegeven naam.

public:
 virtual cli::array <System::Reflection::MemberInfo ^> ^ GetMember(System::String ^ name);
public:
 cli::array <System::Reflection::MemberInfo ^> ^ GetMember(System::String ^ name);
public System.Reflection.MemberInfo[] GetMember(string name);
abstract member GetMember : string -> System.Reflection.MemberInfo[]
override this.GetMember : string -> System.Reflection.MemberInfo[]
member this.GetMember : string -> System.Reflection.MemberInfo[]
Public Function GetMember (name As String) As MemberInfo()

Parameters

name
String

De tekenreeks met de naam van de openbare leden die u wilt ophalen.

Retouren

Een matrix met MemberInfo objecten die de openbare leden vertegenwoordigen met de opgegeven naam, indien gevonden; anders een lege matrix.

Implementeringen

Uitzonderingen

name is null.

Voorbeelden

In het volgende voorbeeld worden alle leden van de String klasse weergegeven die beginnen met de letter 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

Opmerkingen

De zoekopdracht name is hoofdlettergevoelig. De zoekopdracht bevat leden van openbare statische en openbare instanties.

Leden bevatten eigenschappen, methoden, velden, gebeurtenissen, enzovoort.

In .NET 6 en eerdere versies retourneert de methode GetMember geen leden in een bepaalde volgorde, zoals alfabetische of declaratievolgorde. Uw code mag niet afhankelijk zijn van de volgorde waarin leden worden geretourneerd, omdat die volgorde varieert. Vanaf .NET 7 is de volgorde echter deterministisch op basis van de volgorde van metagegevens in de assembly.

Deze overbelasting van de methode vindt geen klasse-initializers (statische constructor). Als u klasse-initializers wilt vinden, gebruikt u een overbelasting die BindingFlags gebruikt en geeft u BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic in Visual Basic). U kunt de klasse-initializer ook ophalen met behulp van de TypeInitializer eigenschap.

In de volgende tabel ziet u welke leden van een basisklasse worden geretourneerd door de Get methoden bij het weergeven van een type.

Lidmaatschapssoort Static Niet-statisch
Constructeur No No
Veld No Ja. Een veld wordt altijd verborgen op basis van naam en kenmerk.
Event Niet van toepassing De algemene regels van het type-systeem zijn dat de overerving hetzelfde is als die van de methoden die de eigenschap implementeren. Weerspiegeling behandelt eigenschappen als hide-by-name-and-signature. Zie opmerking 2 hieronder.
Methode No Ja. Een methode (zowel virtueel als niet-virtueel) kan worden verborgen op basis van naam of op basis van naam en handtekening.
Geneste type No No
Property Niet van toepassing De algemene regels van het type-systeem zijn dat de overerving hetzelfde is als die van de methoden die de eigenschap implementeren. Weerspiegeling behandelt eigenschappen als hide-by-name-and-signature. Zie opmerking 2 hieronder.
  1. Hide-by-name-and-signature beschouwt alle onderdelen van de handtekening, waaronder aangepaste modifiers, retourtypen, parametertypen, sentinels en onbeheerde aanroepconventies. Dit is een binaire vergelijking.

  2. Voor reflectie worden eigenschappen en gebeurtenissen verborgen op basis van naam en signatuur. Als u een eigenschap hebt met zowel een get als een set accessor in de basisklasse, maar de afgeleide klasse alleen een get-accessor heeft, verbergt de eigenschap afgeleide klasse de eigenschap basisklasse en hebt u geen toegang tot de setter op de basisklasse.

  3. Aangepaste kenmerken maken geen deel uit van het algemene typesysteem.

Als de huidige Type een geconstrueerd generiek type vertegenwoordigt, retourneert deze methode de MemberInfo met typeparameters vervangen door de geschikte typeargumenten.

Als de huidige Type een typeparameter vertegenwoordigt in de definitie van een algemeen type of algemene methode, doorzoekt deze methode de leden van de klassebeperking of de leden van Object als er geen klassebeperking is.

Note

Voor algemene methoden moet u de typeargumenten niet opnemen in name. Met de C#-code GetMember("MyMethod<int>") wordt bijvoorbeeld gezocht naar een lid met de tekstnaam 'MyMethod<int>', in plaats van een methode met een naam MyMethod die één algemeen argument van het type intheeft.

Zie ook

Van toepassing op

GetMember(String, BindingFlags)

Hiermee wordt gezocht naar de opgegeven leden met behulp van de opgegeven bindingsbeperkingen.

public:
 virtual cli::array <System::Reflection::MemberInfo ^> ^ GetMember(System::String ^ name, System::Reflection::BindingFlags bindingAttr);
public virtual System.Reflection.MemberInfo[] GetMember(string name, System.Reflection.BindingFlags bindingAttr);
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()

Parameters

name
String

De tekenreeks met de naam van de leden die u wilt ophalen.

bindingAttr
BindingFlags

Een bitsgewijze combinatie van de opsommingswaarden die aangeven hoe de zoekopdracht wordt uitgevoerd.

– of –

Default om een lege matrix te retourneren.

Retouren

Een matrix met MemberInfo objecten die de openbare leden vertegenwoordigen met de opgegeven naam, indien gevonden; anders een lege matrix.

Implementeringen

Uitzonderingen

name is null.

Voorbeelden

In het volgende voorbeeld worden alle openbare statische leden van de myString klasse weergegeven die beginnen met de letter 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

Opmerkingen

Deze methode kan worden overschreven door een afgeleide klasse.

Leden bevatten eigenschappen, methoden, velden, gebeurtenissen, enzovoort.

In .NET 6 en eerdere versies retourneert de methode GetMember geen leden in een bepaalde volgorde, zoals alfabetische of declaratievolgorde. Uw code mag niet afhankelijk zijn van de volgorde waarin leden worden geretourneerd, omdat die volgorde varieert. Vanaf .NET 7 is de volgorde echter deterministisch op basis van de volgorde van metagegevens in de assembly.

De volgende BindingFlags filtervlagmen kunnen worden gebruikt om te definiëren welke leden moeten worden opgenomen in de zoekopdracht:

  • U moet of BindingFlags.Instance of BindingFlags.Static opgeven om een retour te krijgen.

  • Geef BindingFlags.Public op dat openbare leden moeten worden opgenomen in de zoekopdracht.

  • Geef BindingFlags.NonPublic op dat u niet-openbare leden (dat wil gezegd privé-, interne en beveiligde leden) wilt opnemen in de zoekopdracht.

  • Geef BindingFlags.FlattenHierarchy op dat u statische leden wilt opnemen public in protected de hiërarchie. private Statische leden in overgenomen klassen zijn niet opgenomen.

De volgende BindingFlags wijzigingsvlagmen kunnen worden gebruikt om de werking van de zoekopdracht te wijzigen:

  • BindingFlags.IgnoreCase om de hoofdlettergevoeligheid van name te negeren.

  • BindingFlags.DeclaredOnly om alleen de leden te doorzoeken die zijn gedeclareerd op de Typeleden die gewoon zijn overgenomen.

Zie System.Reflection.BindingFlags voor meer informatie.

Als u de klasse-initializer (statische constructor) wilt ophalen met deze overbelasting van de methode, moet u 'statische constructor' opgeven voor name en BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic in Visual Basic) voor bindingAttr. U kunt de klasse-initializer ook ophalen met behulp van de TypeInitializer eigenschap.

Als de huidige Type een geconstrueerd generiek type vertegenwoordigt, retourneert deze methode de MemberInfo met typeparameters vervangen door de geschikte typeargumenten.

Als de huidige Type een typeparameter vertegenwoordigt in de definitie van een algemeen type of algemene methode, doorzoekt deze methode de leden van de klassebeperking of de leden van Object als er geen klassebeperking is.

Note

Voor algemene methoden moet u de typeargumenten niet opnemen in name. Met de C#-code GetMember("MyMethod<int>") wordt bijvoorbeeld gezocht naar een lid met de tekstnaam 'MyMethod<int>', in plaats van een methode met een naam MyMethod die één algemeen argument van het type intheeft.

Zie ook

Van toepassing op

GetMember(String, MemberTypes, BindingFlags)

Zoekt naar de opgegeven leden van het opgegeven lidtype, met behulp van de opgegeven bindingsbeperkingen.

public:
 virtual cli::array <System::Reflection::MemberInfo ^> ^ GetMember(System::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);
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()

Parameters

name
String

De tekenreeks met de naam van de leden die u wilt ophalen.

type
MemberTypes

De waarde die moet worden gezocht.

bindingAttr
BindingFlags

Een bitsgewijze combinatie van de opsommingswaarden die aangeven hoe de zoekopdracht wordt uitgevoerd.

– of –

Default om een lege matrix te retourneren.

Retouren

Een matrix met MemberInfo objecten die de openbare leden vertegenwoordigen met de opgegeven naam, indien gevonden; anders een lege matrix.

Implementeringen

Uitzonderingen

name is null.

Een afgeleide klasse moet een implementatie bieden.

Voorbeelden

In het volgende voorbeeld worden alle methoden van de myString klasse weergegeven die beginnen met de letter 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

Opmerkingen

Leden bevatten eigenschappen, methoden, velden, gebeurtenissen, enzovoort.

In .NET 6 en eerdere versies retourneert de methode GetMember geen leden in een bepaalde volgorde, zoals alfabetische of declaratievolgorde. Uw code mag niet afhankelijk zijn van de volgorde waarin leden worden geretourneerd, omdat die volgorde varieert. Vanaf .NET 7 is de volgorde echter deterministisch op basis van de volgorde van metagegevens in de assembly.

De volgende BindingFlags filtervlagmen kunnen worden gebruikt om te definiëren welke leden moeten worden opgenomen in de zoekopdracht:

  • U moet of BindingFlags.Instance of BindingFlags.Static opgeven om een retour te krijgen.

  • Geef BindingFlags.Public op dat openbare leden moeten worden opgenomen in de zoekopdracht.

  • Geef BindingFlags.NonPublic op dat u niet-openbare leden (dat wil gezegd privé-, interne en beveiligde leden) wilt opnemen in de zoekopdracht.

  • Geef BindingFlags.FlattenHierarchy op dat u statische leden wilt opnemen public in protected de hiërarchie. private Statische leden in overgenomen klassen zijn niet opgenomen.

De volgende BindingFlags wijzigingsvlagmen kunnen worden gebruikt om de werking van de zoekopdracht te wijzigen:

  • BindingFlags.IgnoreCase om de hoofdlettergevoeligheid van name te negeren.

  • BindingFlags.DeclaredOnly om alleen de leden te doorzoeken die zijn gedeclareerd op de Typeleden die gewoon zijn overgenomen.

Zie System.Reflection.BindingFlags voor meer informatie.

Als u de klasse-initializer (statische constructor) wilt ophalen met deze overbelasting van de methode, moet u 'statische constructor' opgeven voor name, MemberTypes.Constructor voor type en BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic in Visual Basic) voor bindingAttr. U kunt de klasse-initializer ook ophalen met behulp van de TypeInitializer eigenschap.

Als de huidige Type een geconstrueerd generiek type vertegenwoordigt, retourneert deze methode de MemberInfo met typeparameters vervangen door de geschikte typeargumenten.

Als de huidige Type een typeparameter vertegenwoordigt in de definitie van een algemeen type of algemene methode, doorzoekt deze methode de leden van de klassebeperking of de leden van Object als er geen klassebeperking is.

Note

Voor algemene methoden moet u de typeargumenten niet opnemen in name. Met de C#-code GetMember("MyMethod<int>") wordt bijvoorbeeld gezocht naar een lid met de tekstnaam 'MyMethod<int>', in plaats van een methode met een naam MyMethod die één algemeen argument van het type intheeft.

Zie ook

Van toepassing op