Leer en inglés

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.

C#
public System.Reflection.MemberInfo[] GetMember (string name);

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.

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

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

.NET 7 y otras versiones
Producto Versiones
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 2.0, 2.1

GetMember(String, BindingFlags)

Busca los miembros especificados mediante las restricciones de enlace especificadas.

C#
public virtual System.Reflection.MemberInfo[] GetMember (string name, System.Reflection.BindingFlags bindingAttr);

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.

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

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

.NET 7 y otras versiones
Producto Versiones
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 2.0, 2.1

GetMember(String, MemberTypes, BindingFlags)

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

C#
public virtual System.Reflection.MemberInfo[] GetMember (string name, System.Reflection.MemberTypes type, System.Reflection.BindingFlags bindingAttr);

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.

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

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

.NET 7 y otras versiones
Producto Versiones
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 2.0, 2.1