Compartir a través de


Type.GetMember Método

Definición

Obtiene los miembros especificados del objeto Type actual.

Sobrecargas

GetMember(String)

Busca los miembros públicos con el nombre especificado.

GetMember(String, BindingFlags)

Busca los miembros especificados mediante las restricciones de enlace especificadas.

GetMember(String, MemberTypes, BindingFlags)

Busca los miembros especificados que sean del tipo de miembro especificado mediante las restricciones de enlace especificadas.

GetMember(String)

Busca los miembros públicos con el nombre especificado.

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

Parámetros

name
String

Cadena que contiene el nombre de los miembros públicos que se van a obtener.

Devoluciones

MemberInfo[]

Matriz de objetos MemberInfo que representa los miembros públicos con el nombre especificado, si se encuentran; de lo contrario, una matriz vacía.

Implementaciones

Excepciones

name es null.

Ejemplos

En el ejemplo siguiente se muestran todos los miembros de String la clase que comienzan por la letra 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

Comentarios

La búsqueda de name distingue mayúsculas de minúsculas. La búsqueda incluye miembros de instancia públicos y estáticos.

Los miembros incluyen propiedades, métodos, campos, eventos, entre otros.

El GetMember método no devuelve miembros en un orden determinado, como el orden alfabético o de declaración. El código no debe depender del orden en el que se devuelven los miembros, ya que ese orden varía.

Esta sobrecarga del método no encontrará inicializadores de clase (constructor estático). Para buscar inicializadores de clase, use una sobrecarga que tome y especifique BindingFlags BindingFlags.Static | ( en BindingFlags.NonPublic BindingFlags.Static Or BindingFlags.NonPublic Visual Basic). También puede obtener el inicializador de clase mediante la TypeInitializer propiedad .

En la tabla siguiente se muestra qué miembros de una clase base devuelven los métodos Get al reflejar en un tipo.

Tipo de miembro Estático No estático
Constructor No No
Campo No Sí. Un campo siempre se oculta por nombre y firma.
evento No es aplicable La regla común del sistema de tipos es que la herencia es la misma que la de los métodos que implementan la propiedad . La reflexión trata las propiedades como hide-by-name-and-signature. Consulte la nota 2 a continuación.
Método No Sí. Un método (virtual y no virtual) puede ser hide-by-name u hide-by-name-and-signature.
Tipo anidado No No
Propiedad. No es aplicable La regla común del sistema de tipos es que la herencia es la misma que la de los métodos que implementan la propiedad . La reflexión trata las propiedades como hide-by-name-and-signature. Consulte la nota 2 a continuación.
  1. Ocultar por nombre y firma tiene en cuenta todas las partes de la firma, incluidos los modificadores personalizados, los tipos de valor devuelto, los tipos de parámetros, los centinelas y las convenciones de llamada no administradas. Se trata de una comparación binaria.

  2. Para la reflexión, las propiedades y los eventos se ocultan por nombre y firma. Si tiene una propiedad con un accessor get y set en la clase base, pero la clase derivada solo tiene un accessor get, la propiedad de clase derivada oculta la propiedad de clase base y no podrá acceder al establecedor en la clase base.

  3. Los atributos personalizados no forman parte del sistema de tipos común.

Si el objeto actual representa un tipo genérico construido, este método devuelve con los parámetros de tipo Type MemberInfo reemplazados por los argumentos de tipo adecuados.

Si el objeto actual representa un parámetro de tipo en la definición de un tipo genérico o un método genérico, este método busca en los miembros de la restricción de clase o en los miembros de si no hay ninguna restricción Type Object de clase.

Nota

Para los métodos genéricos, no incluya los argumentos de tipo en name . Por ejemplo, el código de C# busca un miembro con el nombre de texto " ", en lugar de un método denominado que tiene un argumento GetMember("MyMethod<int>") MyMethod<int> genérico de tipo MyMethod int .

Consulte también

Se aplica a

GetMember(String, BindingFlags)

Busca los miembros especificados mediante las restricciones de enlace especificadas.

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

Parámetros

name
String

Cadena que contiene el nombre de los miembros que se van a obtener.

bindingAttr
BindingFlags

Combinación bit a bit de los valores de enumeración que especifican cómo se realiza la búsqueda.

O bien Default para que se devuelva una matriz vacía.

Devoluciones

MemberInfo[]

Matriz de objetos MemberInfo que representa los miembros públicos con el nombre especificado, si se encuentran; de lo contrario, una matriz vacía.

Implementaciones

Excepciones

name es null.

Ejemplos

En el ejemplo siguiente se muestran todos los miembros estáticos públicos de la myString clase que comienzan con la letra 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

Comentarios

Una clase derivada puede invalidar este método.

Los miembros incluyen propiedades, métodos, campos, eventos, entre otros.

El GetMember método no devuelve miembros en un orden determinado, como el orden alfabético o de declaración. El código no debe depender del orden en el que se devuelven los miembros, ya que ese orden varía.

Las siguientes marcas de filtro se pueden usar para definir los miembros que BindingFlags se incluirán en la búsqueda:

  • Debe especificar o BindingFlags.Instance BindingFlags.Static para obtener una devolución.

  • Especifique BindingFlags.Public para incluir miembros públicos en la búsqueda.

  • Especifique BindingFlags.NonPublic para incluir miembros no públicos (es decir, miembros privados, internos y protegidos) en la búsqueda.

  • Especifique para incluir los miembros estáticos y en la jerarquía; no se incluyen los miembros estáticos de BindingFlags.FlattenHierarchy public las clases protected private heredadas.

Se pueden BindingFlags usar las siguientes marcas modificadoras para cambiar el funcionamiento de la búsqueda:

  • BindingFlags.IgnoreCase para pasar por alto el caso de name .

  • BindingFlags.DeclaredOnly para buscar solo los miembros declarados en Type , no los miembros que simplemente se heredaron.

Vea System.Reflection.BindingFlags para obtener más información.

Para obtener el inicializador de clase (constructor estático) mediante esta sobrecarga de método, debe especificar "constructor estático" para y | name BindingFlags.Static ( en BindingFlags.NonPublic BindingFlags.Static Or BindingFlags.NonPublic Visual Basic) para bindingAttr . También puede obtener el inicializador de clase mediante la TypeInitializer propiedad .

Si el objeto actual representa un tipo genérico construido, este método devuelve con los parámetros de tipo Type MemberInfo reemplazados por los argumentos de tipo adecuados.

Si el objeto actual representa un parámetro de tipo en la definición de un tipo genérico o un método genérico, este método busca en los miembros de la restricción de clase o en los miembros de si no hay ninguna restricción Type Object de clase.

Nota

Para los métodos genéricos, no incluya los argumentos de tipo en name . Por ejemplo, el código de C# busca un miembro con el nombre de texto " ", en lugar de un método denominado que tiene un argumento GetMember("MyMethod<int>") MyMethod<int> genérico de tipo MyMethod int .

Consulte también

Se aplica a

GetMember(String, MemberTypes, BindingFlags)

Busca los miembros especificados que sean del tipo de miembro especificado mediante las restricciones de enlace especificadas.

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

Parámetros

name
String

Cadena que contiene el nombre de los miembros que se van a obtener.

type
MemberTypes

Valor que se va a buscar.

bindingAttr
BindingFlags

Combinación bit a bit de los valores de enumeración que especifican cómo se realiza la búsqueda.

O bien Default para que se devuelva una matriz vacía.

Devoluciones

MemberInfo[]

Matriz de objetos MemberInfo que representa los miembros públicos con el nombre especificado, si se encuentran; de lo contrario, una matriz vacía.

Implementaciones

Excepciones

name es null.

La clase derivada debe proporcionar una implementación.

Ejemplos

En el ejemplo siguiente se muestran todos los métodos de myString la clase que comienzan con la letra 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

Comentarios

Los miembros incluyen propiedades, métodos, campos, eventos, entre otros.

El GetMember método no devuelve miembros en un orden determinado, como el orden alfabético o de declaración. El código no debe depender del orden en el que se devuelven los miembros, ya que ese orden varía.

Las siguientes marcas de filtro se pueden usar para definir los miembros que BindingFlags se incluirán en la búsqueda:

  • Debe especificar o BindingFlags.Instance BindingFlags.Static para obtener una devolución.

  • Especifique BindingFlags.Public para incluir miembros públicos en la búsqueda.

  • Especifique BindingFlags.NonPublic para incluir miembros no públicos (es decir, miembros privados, internos y protegidos) en la búsqueda.

  • Especifique para incluir los miembros estáticos y en la jerarquía; no se incluyen los miembros estáticos de BindingFlags.FlattenHierarchy public las clases protected private heredadas.

Se pueden BindingFlags usar las siguientes marcas modificadoras para cambiar el funcionamiento de la búsqueda:

  • BindingFlags.IgnoreCase para pasar por alto el caso de name .

  • BindingFlags.DeclaredOnly para buscar solo los miembros declarados en Type , no los miembros que simplemente se heredaron.

Vea System.Reflection.BindingFlags para obtener más información.

Para obtener el inicializador de clase (constructor estático) mediante esta sobrecarga de método, debe especificar "constructor estático" para , para name y | ( MemberTypes.Constructor en type BindingFlags.Static BindingFlags.NonPublic BindingFlags.Static Or BindingFlags.NonPublic Visual Basic) para bindingAttr . También puede obtener el inicializador de clase mediante la TypeInitializer propiedad .

Si el objeto actual representa un tipo genérico construido, este método devuelve con los parámetros de tipo Type MemberInfo reemplazados por los argumentos de tipo adecuados.

Si el objeto actual representa un parámetro de tipo en la definición de un tipo genérico o un método genérico, este método busca en los miembros de la restricción de clase o en los miembros de si no hay ninguna restricción Type Object de clase.

Nota

Para los métodos genéricos, no incluya los argumentos de tipo en name . Por ejemplo, el código de C# busca un miembro con el nombre de texto " ", en lugar de un método denominado que tiene un argumento GetMember("MyMethod<int>") MyMethod<int> genérico de tipo MyMethod int .

Consulte también

Se aplica a