Compartir por


Type.GetMember Método

Definición

Obtiene los miembros especificados del objeto actual Type.

Sobrecargas

Nombre Description
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 del tipo de miembro especificado, utilizando las restricciones de enlace especificadas.

GetMember(String)

Source:
Type.cs
Source:
Type.cs
Source:
Type.cs
Source:
Type.cs
Source:
Type.cs

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

Parámetros

name
String

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

Devoluciones

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

Implementaciones

Atributos

Excepciones

name es null.

Ejemplos

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

Comentarios

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

Los miembros incluyen propiedades, métodos, campos, eventos, etc.

En .NET 6 y versiones anteriores, el GetMember método no devuelve miembros en un orden determinado, como 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. Sin embargo, a partir de .NET 7, el orden es determinista en función del orden de metadatos del ensamblado.

Esta sobrecarga del método no encontrará inicializadores de clase (constructor estático). Para buscar inicializadores de clase, use una sobrecarga que toma BindingFlagsy especifica BindingFlags.StaticBindingFlags.NonPublic | (BindingFlags.StaticOrBindingFlags.NonPublic en 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 reflexionar sobre un tipo.

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

  2. En reflexión, las propiedades y eventos se ocultan por nombre y firma. Si tiene una propiedad con un descriptor de acceso get y set en la clase base, pero la clase derivada solo tiene un descriptor de acceso 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 Type representa un tipo genérico construido, este método devuelve el MemberInfo con los parámetros de tipo reemplazados por los argumentos de tipo adecuados.

Si el objeto actual Type 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 Object si no hay ninguna restricción de clase.

Nota:

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

Consulte también

Se aplica a

GetMember(String, BindingFlags)

Source:
Type.cs
Source:
Type.cs
Source:
Type.cs
Source:
Type.cs
Source:
Type.cs

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

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 devolver una matriz vacía.

Devoluciones

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

Implementaciones

Atributos

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.

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

Comentarios

Este método se puede invalidar mediante una clase derivada.

Los miembros incluyen propiedades, métodos, campos, eventos, etc.

En .NET 6 y versiones anteriores, el GetMember método no devuelve miembros en un orden determinado, como 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. Sin embargo, a partir de .NET 7, el orden es determinista en función del orden de metadatos del ensamblado.

Las marcas de filtro siguientes BindingFlags se pueden usar para definir qué miembros incluir en la búsqueda:

  • Debe especificar ya sea BindingFlags.Instance o 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 BindingFlags.FlattenHierarchy para incluir public y protected los miembros estáticos en la jerarquía; private no se incluyen los miembros estáticos de las clases heredadas.

Se pueden usar las marcas modificadores siguientes BindingFlags 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 , Typeno los miembros que simplemente se heredaron.

Consulte 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 namey BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic en Visual Basic) para bindingAttr. También puede obtener el inicializador de clase mediante la TypeInitializer propiedad .

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

Si el objeto actual Type 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 Object si no hay ninguna restricción de clase.

Nota:

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

Consulte también

Se aplica a

GetMember(String, MemberTypes, BindingFlags)

Source:
Type.cs
Source:
Type.cs
Source:
Type.cs
Source:
Type.cs
Source:
Type.cs

Busca los miembros especificados del tipo de miembro especificado, utilizando las restricciones de enlace especificadas.

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

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 devolver una matriz vacía.

Devoluciones

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

Implementaciones

Atributos

Excepciones

name es null.

Una clase derivada debe proporcionar una implementación.

Ejemplos

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

Comentarios

Los miembros incluyen propiedades, métodos, campos, eventos, etc.

En .NET 6 y versiones anteriores, el GetMember método no devuelve miembros en un orden determinado, como 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. Sin embargo, a partir de .NET 7, el orden es determinista en función del orden de metadatos del ensamblado.

Las marcas de filtro siguientes BindingFlags se pueden usar para definir qué miembros incluir en la búsqueda:

  • Debe especificar ya sea BindingFlags.Instance o 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 BindingFlags.FlattenHierarchy para incluir public y protected los miembros estáticos en la jerarquía; private no se incluyen los miembros estáticos de las clases heredadas.

Se pueden usar las marcas modificadores siguientes BindingFlags 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 , Typeno los miembros que simplemente se heredaron.

Consulte 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 name, MemberTypes.Constructor para typey BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic en Visual Basic) para bindingAttr. También puede obtener el inicializador de clase mediante la TypeInitializer propiedad .

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

Si el objeto actual Type 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 Object si no hay ninguna restricción de clase.

Nota:

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

Consulte también

Se aplica a