Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Método Type.FindMembers (MemberTypes, BindingFlags, MemberFilter, Object)

 

Publicado: octubre de 2016

Devuelve una matriz filtrada de objetos MemberInfo del tipo del miembro especificado.

Espacio de nombres:   System
Ensamblado:  mscorlib (en mscorlib.dll)

public virtual MemberInfo[] FindMembers(
	MemberTypes memberType,
	BindingFlags bindingAttr,
	MemberFilter filter,
	object filterCriteria
)

Parámetros

memberType
Type: System.Reflection.MemberTypes

Objeto que indica el tipo de miembro que se va a buscar.

bindingAttr
Type: System.Reflection.BindingFlags

Máscara de bits formada por una o varias enumeraciones BindingFlags que especifican la forma en que se realiza la búsqueda.

o bien

Cero, para devolver null.

filter
Type: System.Reflection.MemberFilter

Delegado que realiza las comparaciones y que devuelve true si el miembro inspeccionado coincide con filterCriteria y false en caso contrario. Es posible usar los delegados FilterAttribute, FilterName y FilterNameIgnoreCase que esta clase proporciona. El primero usa los campos de FieldAttributes, MethodAttributes y MethodImplAttributes como criterios de búsqueda, y los otros dos usan objetos String como criterios de búsqueda.

filterCriteria
Type: System.Object

Criterios de búsqueda que determinan si se devuelve un miembro en la matriz de objetos MemberInfo.

Los campos de FieldAttributes, MethodAttributes y MethodImplAttributes se pueden usar junto con el delegado FilterAttribute que esta clase proporciona.

Valor devuelto

Type: System.Reflection.MemberInfo[]

Matriz filtrada de objetos MemberInfo del tipo del miembro especificado.

o bien

Matriz vacía de tipo MemberInfo en caso de que el objeto Type actual no tenga miembros del tipo memberType que coincidan con los criterios del filtro.

Exception Condition
ArgumentNullException

El valor de filter es null.

Este método puede invalidarse mediante una clase derivada.

Los miembros incluyen propiedades, métodos, campos, eventos y así sucesivamente.

La siguiente BindingFlags marcas de filtro pueden utilizarse para definir los miembros que desea incluir en la búsqueda:

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

  • Especificar BindingFlags.Instance para incluir miembros de instancia en la búsqueda.

  • Especificar BindingFlags.Static para incluir miembros estáticos en la búsqueda.

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

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

La siguiente BindingFlags marcadores modificadores pueden utilizarse para cambiar el funcionamiento de la búsqueda:

  • BindingFlags.DeclaredOnly para buscar sólo los miembros declarados en el Type, no los miembros que simplemente se han heredado.

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

Los valores válidos para MemberType se definen en MemberInfo. Si dichos miembros no se encuentran, se devuelve una matriz vacía.

Para obtener el inicializador de clase (.cctor) utilizando este método, se debe especificar BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic en Visual Basic). También puede obtener el inicializador de clase utilizando la TypeInitializer propiedad.

Si la corriente Type representa un parámetro de tipo de un tipo genérico o un método genérico, FindMembers procesa los miembros declarados por la restricción de clase y las restricciones de interfaz del parámetro de tipo.

En el ejemplo siguiente se busca a todos los miembros de una clase que coinciden con los criterios de búsqueda especificados y, a continuación, se muestra a dichos miembros.

using System;
using System.Reflection;

class MyFindMembersClass
{
    public static void Main()
    {
        Object objTest = new Object();
        Type objType = objTest.GetType ();
        MemberInfo[] arrayMemberInfo;
        try
        {
            //Find all static or public methods in the Object class that match the specified name.
            arrayMemberInfo = objType.FindMembers(MemberTypes.Method,
                BindingFlags.Public | BindingFlags.Static| BindingFlags.Instance,
                new MemberFilter(DelegateToSearchCriteria),
                "ReferenceEquals");

            for(int index=0;index < arrayMemberInfo.Length ;index++)
                Console.WriteLine ("Result of FindMembers -\t"+ arrayMemberInfo[index].ToString() +"\n");                 
        }
        catch (Exception e)
        {
            Console.WriteLine ("Exception : " + e.ToString() );            
        }           
    }
    public static bool DelegateToSearchCriteria(MemberInfo objMemberInfo, Object objSearch)
    {
        // Compare the name of the member function with the filter criteria.
        if(objMemberInfo.Name.ToString() == objSearch.ToString())
            return true;
        else 
            return false;
    }
}

.NET Framework
Disponible desde 1.1
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Volver al principio
Mostrar: