Método Type.FindMembers() en C# con ejemplos

El método Type.FindMembers(MemberTypes, BindingFlags, MemberFilter, Object) se usa para devolver una array filtrada de objetos MemberInfo del tipo de miembro especificado.
Sintaxis:  

pública virtual System.Reflection.MemberInfo[] FindMembers (System.Reflection.MemberTypes memberType, System.Reflection.BindingFlags bindingAttr, System.Reflection.MemberFilter filter, object filterCriteria); 
 

Parámetros:

  • memberType: Indica que tipo de miembro se debe buscar.
  • bindingAttr: Se utiliza para especificar cómo se realiza la búsqueda o Zero, para devolver nulo.
  • filtro: hace las comparaciones, devolviendo verdadero si el miembro que se está inspeccionando actualmente coincide con los criterios de filtro y falso en caso contrario.
  • filterCriteria: los criterios de búsqueda que determinan si se devuelve un miembro en la array de objetos MemberInfo.

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

  • Debe especificar BindingFlags.Instance o BindingFlags.Static para obtener una devolución.
  • Especifique BindingFlags.Instance para incluir miembros de instancia en la búsqueda.
  • Especifique BindingFlags.Static para incluir miembros estáticos en la búsqueda.
  • 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.

Valor devuelto: este método devuelve una array filtrada de objetos MemberInfo del tipo de miembro especificado. o Una array vacía de tipo MemberInfo,
Excepción: este método arroja ArgumentNullException si el filtro es nulo.
Ejemplo:

csharp

// C# program to demonstrate the
// Type.FindMembers(MemberTypes,
// BindingFlags, MemberFilter,
// Object) Method
using System;
using System.Globalization;
using System.Reflection;
 
class GFG {
 
    // Main Method
    public static void Main()
    {
        // Declaring and initializing object of Type
        Type objType = typeof(string);
 
        // Creating try-catch block for handling Exception
        try {
 
            // Declaring and initializing the object of MemberTypes
            // that indicates the type of member to search for.
            MemberTypes mt = MemberTypes.All;
 
            // Declaring and initializing the object of BindingFlags
            // that specify how the search is conducted.
            BindingFlags ba = BindingFlags.Public
                          | BindingFlags.Instance;
 
            // Declaring and initializing MemberFilter
            // which help the delegate that compares
            // the MemberInfo against filterCriteria.
            MemberFilter mf = new MemberFilter(Search);
 
            // Declaring and initializing object of filterCriteria
            // the search criteria that determines whether a member is
            // returned in the array of MemberInfo objects or not
            object filterCriteria = "Equals";
 
            // Getting filtered array of MemberInfo by
            // using FindMembers() Method
            MemberInfo[] info = objType.FindMembers(mt, ba, mf, filterCriteria);
 
            // Display the Result
            for (int index = 0; index < info.Length; index++)
                Console.WriteLine("Result of FindMembers -  {0}",
                                        info[index].ToString());
        }
 
        // catch ArgumentNullException here
        catch (ArgumentNullException e)
        {
            Console.Write("Exception Thrown: ");
            Console.Write("{0}", e.GetType(), e.Message);
        }
    }
 
    // Defining MyInterfaceFilter
    // which helps to fix the certain condition
    // on which filtration took place
    public static bool Search(MemberInfo info, Object obj)
    {
 
        // Compare the name of the member
        // function with the filter criteria.
        if (info.Name.ToString() == obj.ToString())
            return true;
        else
            return false;
    }
}
Producción: 

Result of FindMembers -  Boolean Equals(System.Object)
Result of FindMembers -  Boolean Equals(System.String)
Result of FindMembers -  Boolean Equals(System.String, System.StringComparison)

 

Referencia:

Publicación traducida automáticamente

Artículo escrito por RohitPrasad3 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *