Sdílet prostřednictvím


Type.GetMember Metoda

Definice

Získá zadané členy aktuálního Type .

Přetížení

GetMember(String)

Vyhledá veřejné členy se zadaným názvem.

GetMember(String, BindingFlags)

Vyhledá zadané členy pomocí zadaných omezení vazby.

GetMember(String, MemberTypes, BindingFlags)

Vyhledá zadané členy zadaného typu člena pomocí zadaných omezení vazby.

GetMember(String)

Vyhledá veřejné členy se zadaným názvem.

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

Parametry

name
String

Řetězec obsahující název veřejných členů, které mají být získány.

Návraty

MemberInfo[]

Pole MemberInfo objektů reprezentující veřejné členy se zadaným názvem, pokud je nalezeno; v opačném případě prázdné pole.

Implementuje

Výjimky

name je null.

Příklady

Následující příklad zobrazí všechny členy String třídy, které začínají písmenem C.

using namespace System;
using namespace System::Security;
using namespace System::Reflection;

// forward declarations:
void GetMemberInfo();
void GetPublicStaticMemberInfo();
void GetPublicInstanceMethodMemberInfo();
int main()
{
   try
   {
      GetMemberInfo();
      GetPublicStaticMemberInfo();
      GetPublicInstanceMethodMemberInfo();
   }
   catch ( ArgumentNullException^ e ) 
   {
      Console::WriteLine( "ArgumentNullException occurred." );
      Console::WriteLine( "Source: {0}", e->Source );
      Console::WriteLine( "Message: {0}", e->Message );
   }
   catch ( NotSupportedException^ e ) 
   {
      Console::WriteLine( "NotSupportedException occurred." );
      Console::WriteLine( "Source: {0}", e->Source );
      Console::WriteLine( "Message: {0}", e->Message );
   }
   catch ( SecurityException^ e ) 
   {
      Console::WriteLine( "SecurityException occurred." );
      Console::WriteLine( "Source: {0}", e->Source );
      Console::WriteLine( "Message: {0}", e->Message );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "Exception occurred." );
      Console::WriteLine( "Source: {0}", e->Source );
      Console::WriteLine( "Message: {0}", e->Message );
   }

}

void GetMemberInfo()
{
   String^ myString = "GetMember_String";
   Type^ myType = myString->GetType();
   
   // Get the members for myString starting with the letter C.
   array<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 ] );
   }
   else
      Console::WriteLine( "No members match the search criteria." );
}

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.");
        }
    }

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

Poznámky

Hledání rozlišuje name velká a malá písmena. Hledání zahrnuje veřejné statické a veřejné členy instance.

Členy obsahují vlastnosti, metody, pole, události a podobně.

GetMemberMetoda nevrací členy v určitém pořadí, jako je abecední nebo pořadí deklarace. Kód nesmí záviset na pořadí, ve kterém jsou členy vráceny, protože jejich pořadí se může měnit.

Tato přetížená metoda nenalezne Inicializátory třídy (static konstruktoru). chcete-li najít inicializátory třídy, použijte přetížení, které přijímá BindingFlags , a zadejte BindingFlags.Static | BindingFlags.NonPublic ( BindingFlags.Static Or BindingFlags.NonPublic v Visual Basic). Můžete také získat inicializátor třídy pomocí TypeInitializer Vlastnosti.

Následující tabulka ukazuje, jaké členy základní třídy jsou vráceny Get metodami, pokud se odráží na typ.

Typ členu Static Nestatický
Konstruktor No No
Pole No Yes. Pole je vždy skrýváno podle názvu a podpisu.
Událost Neuvedeno Pro systém typů platí obecné pravidlo, že dědičnost je stejná jako u metod, které implementují vlastnost. Reflexe pracuje s třídami jako se skrývanými podle názvu a podpisu. Viz poznámka 2 níže.
Metoda No Yes. Metody (virtuální i nevirtuální) mohou být skrývány podle názvu nebo podle názvu a podpisu.
Vnořený typ No No
Vlastnost Neuvedeno Pro systém typů platí obecné pravidlo, že dědičnost je stejná jako u metod, které implementují vlastnost. Reflexe pracuje s třídami jako se skrývanými podle názvu a podpisu. Viz poznámka 2 níže.
  1. Skrývání podle názvu a podpisu bere v úvahu všechny části podpisu včetně vlastních modifikátorů, návratových typů, typů parametrů, sentinelů a nespravovaných konvencí volání. Jedná se o binární porovnání.

  2. Pro účely reflexe jsou vlastnosti a události skrývány podle názvu a podpisu. Má-li vlastnost v základní třídě přístupové metody get i set, ale odvozená třída má pouze přístupovou metodu get, vlastnost odvozené třídy skryje vlastnost základní třídy a nebudete mít k dispozici přístup k metodě set základní třídy.

  3. Vlastní atributy nejsou součástí systému společných typů.

Pokud aktuální Type představuje Konstruovaný obecný typ, vrátí tato metoda MemberInfo s parametry typu nahrazenými odpovídajícími argumenty typu.

Pokud aktuální Type představuje parametr typu v definici obecného typu nebo obecné metody, tato metoda vyhledá členy omezení třídy nebo členy, Object Pokud neexistuje omezení třídy.

Poznámka

Pro obecné metody nezahrnujte argumenty typu v name . Například kód jazyka C# GetMember("MyMethod<int>") vyhledává člen s názvem text " MyMethod<int> ", nikoli pro metodu s názvem MyMethod , která má jeden obecný argument typu int .

Viz také

Platí pro

GetMember(String, BindingFlags)

Vyhledá zadané členy pomocí zadaných omezení vazby.

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

Parametry

name
String

Řetězec obsahující název členů, které mají být získány.

bindingAttr
BindingFlags

Bitová kombinace hodnot výčtu, které určují, jak se provádí hledání.

-nebo- Default pro vrácení prázdného pole.

Návraty

MemberInfo[]

Pole MemberInfo objektů reprezentující veřejné členy se zadaným názvem, pokud je nalezeno; v opačném případě prázdné pole.

Implementuje

Výjimky

name je null.

Příklady

Následující příklad zobrazí všechny veřejné statické členy myString třídy, které začínají písmenem C.

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
   array<MemberInfo^>^myMembers = myType->GetMember( "C*", static_cast<BindingFlags>(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 ] );
   }
   else
      Console::WriteLine( "No members match the search criteria." );
}
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.");
    }
}
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

Poznámky

Tato metoda může být přepsána odvozenou třídou.

Členy obsahují vlastnosti, metody, pole, události a podobně.

GetMemberMetoda nevrací členy v určitém pořadí, jako je abecední nebo pořadí deklarace. Kód nesmí záviset na pořadí, ve kterém jsou členy vráceny, protože jejich pořadí se může měnit.

Následující BindingFlags příznaky filtru lze použít k definování členů, kteří mají být zahrnuti do hledání:

  • BindingFlags.Instance BindingFlags.Static Chcete-li získat návrat, je nutné zadat buď nebo.

  • Zadejte BindingFlags.Public , chcete-li do hledání zahrnout veřejné členy.

  • Určete BindingFlags.NonPublic , jestli se ve vyhledávání mají zahrnout neveřejné členy (tj. soukromé, interní a chráněné členy).

  • Určete, BindingFlags.FlattenHierarchy že se mají zahrnout public a protected statické členy v hierarchii. private statické členy v děděných třídách nejsou zahrnuté.

Následující BindingFlags příznaky modifikátoru lze použít ke změně toho, jak hledání funguje:

  • BindingFlags.IgnoreCase pro ignorování velkých a malých písmen name .

  • BindingFlags.DeclaredOnly Chcete-li hledat pouze členy deklarované v Type , nikoli členy, které byly jednoduše zděděny.

Další informace naleznete v tématu System.Reflection.BindingFlags.

chcete-li získat inicializátor třídy (statický konstruktor) pomocí tohoto přetížení metody, je nutné zadat "statický konstruktor" pro name a BindingFlags.Static | BindingFlags.NonPublic ( BindingFlags.Static Or BindingFlags.NonPublic v Visual Basic) pro bindingAttr . Můžete také získat inicializátor třídy pomocí TypeInitializer Vlastnosti.

Pokud aktuální Type představuje Konstruovaný obecný typ, vrátí tato metoda MemberInfo s parametry typu nahrazenými odpovídajícími argumenty typu.

Pokud aktuální Type představuje parametr typu v definici obecného typu nebo obecné metody, tato metoda vyhledá členy omezení třídy nebo členy, Object Pokud neexistuje omezení třídy.

Poznámka

Pro obecné metody nezahrnujte argumenty typu v name . Například kód jazyka C# GetMember("MyMethod<int>") vyhledává člen s názvem text " MyMethod<int> ", nikoli pro metodu s názvem MyMethod , která má jeden obecný argument typu int .

Viz také

Platí pro

GetMember(String, MemberTypes, BindingFlags)

Vyhledá zadané členy zadaného typu člena pomocí zadaných omezení vazby.

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

Parametry

name
String

Řetězec obsahující název členů, které mají být získány.

type
MemberTypes

Hodnota, kterou chcete vyhledat.

bindingAttr
BindingFlags

Bitová kombinace hodnot výčtu, které určují, jak se provádí hledání.

-nebo- Default pro vrácení prázdného pole.

Návraty

MemberInfo[]

Pole MemberInfo objektů reprezentující veřejné členy se zadaným názvem, pokud je nalezeno; v opačném případě prázdné pole.

Implementuje

Výjimky

name je null.

Odvozená třída musí poskytovat implementaci.

Příklady

Následující příklad zobrazí všechny metody myString třídy, které začínají písmenem C.

void GetPublicInstanceMethodMemberInfo()
{
   String^ myString = "GetMember_String_MemberType_BindingFlag";
   Type^ myType = myString->GetType();
   
   // Get the public instance methods for myString starting with the letter C.
   array<MemberInfo^>^myMembers = myType->GetMember( "C*", MemberTypes::Method, static_cast<BindingFlags>(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 ] );
   }
   else
      Console::WriteLine( "No members match the search criteria." );
}
    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.");
        }
    }
}
    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

Poznámky

Členy obsahují vlastnosti, metody, pole, události a podobně.

GetMemberMetoda nevrací členy v určitém pořadí, jako je abecední nebo pořadí deklarace. Kód nesmí záviset na pořadí, ve kterém jsou členy vráceny, protože jejich pořadí se může měnit.

Následující BindingFlags příznaky filtru lze použít k definování členů, kteří mají být zahrnuti do hledání:

  • BindingFlags.Instance BindingFlags.Static Chcete-li získat návrat, je nutné zadat buď nebo.

  • Zadejte BindingFlags.Public , chcete-li do hledání zahrnout veřejné členy.

  • Určete BindingFlags.NonPublic , jestli se ve vyhledávání mají zahrnout neveřejné členy (tj. soukromé, interní a chráněné členy).

  • Určete, BindingFlags.FlattenHierarchy že se mají zahrnout public a protected statické členy v hierarchii. private statické členy v děděných třídách nejsou zahrnuté.

Následující BindingFlags příznaky modifikátoru lze použít ke změně toho, jak hledání funguje:

  • BindingFlags.IgnoreCase pro ignorování velkých a malých písmen name .

  • BindingFlags.DeclaredOnly Chcete-li hledat pouze členy deklarované v Type , nikoli členy, které byly jednoduše zděděny.

Další informace naleznete v tématu System.Reflection.BindingFlags.

chcete-li získat inicializátor třídy (statický konstruktor) pomocí tohoto přetížení metody, je nutné zadat "statický konstruktor" pro name , MemberTypes.Constructor pro type a BindingFlags.Static | BindingFlags.NonPublic ( BindingFlags.Static Or BindingFlags.NonPublic v Visual Basic) pro bindingAttr . Můžete také získat inicializátor třídy pomocí TypeInitializer Vlastnosti.

Pokud aktuální Type představuje Konstruovaný obecný typ, vrátí tato metoda MemberInfo s parametry typu nahrazenými odpovídajícími argumenty typu.

Pokud aktuální Type představuje parametr typu v definici obecného typu nebo obecné metody, tato metoda vyhledá členy omezení třídy nebo členy, Object Pokud neexistuje omezení třídy.

Poznámka

Pro obecné metody nezahrnujte argumenty typu v name . Například kód jazyka C# GetMember("MyMethod<int>") vyhledává člen s názvem text " MyMethod<int> ", nikoli pro metodu s názvem MyMethod , která má jeden obecný argument typu int .

Viz také

Platí pro