Este artigo foi traduzido por máquina. Para visualizar o arquivo em inglês, marque a caixa de seleção Inglês. Você também pode exibir o texto Em inglês em uma janela pop-up, movendo o ponteiro do mouse sobre o texto.
Tradução
Inglês

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

 

Retorna um conjunto filtrado de MemberInfo objetos do tipo do membro especificado.

Namespace:   System
Assembly:  mscorlib (em mscorlib.dll)

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

Parâmetros

memberType
Type: System.Reflection.MemberTypes

Um objeto que indica o tipo de membro para a pesquisa.

bindingAttr
Type: System.Reflection.BindingFlags

Um bitmask composto de um ou mais BindingFlags que especificam como a pesquisa é realizada.

- ou -

Zero, retorne null.

filter
Type: System.Reflection.MemberFilter

O delegado que faz as comparações, retornando true se o membro atualmente sendo inspecionado corresponde a filterCriteria e false caso contrário. Você pode usar o FilterAttribute, FilterName, e FilterNameIgnoreCase delegados fornecidos por essa classe. O primeiro usa os campos de FieldAttributes, MethodAttributes, e MethodImplAttributes como critérios de pesquisa e usam os dois delegados String objetos como critério de pesquisa.

filterCriteria
Type: System.Object

Os critérios de pesquisa que determina se um membro é retornado na matriz de MemberInfo objetos.

Os campos de FieldAttributes, MethodAttributes, e MethodImplAttributes pode ser usado em conjunto com o FilterAttribute fornecido pela classe de delegado.

Valor Retornado

Type: System.Reflection.MemberInfo[]

Um conjunto filtrado de MemberInfo objetos do tipo do membro especificado.

- ou -

Uma matriz vazia do tipo MemberInfo, se o atual Type não tem membros de tipo memberType que correspondem aos critérios de filtro.

Exception Condition
ArgumentNullException

filter é null.

Esse método pode ser substituído por uma classe derivada.

Membros incluem propriedades, métodos, campos, eventos e assim por diante.

O seguinte BindingFlags sinalizadores de filtro podem ser usados para definir os membros a serem incluídos na pesquisa:

  • Você deve especificar BindingFlags.Instance ou BindingFlags.Static para obter um retorno.

  • Especifique BindingFlags.Instance para incluir membros de instância na pesquisa.

  • Especifique BindingFlags.Static para incluir membros estáticos na pesquisa.

  • Especifique BindingFlags.Public para incluir membros públicos na pesquisa.

  • Especifique BindingFlags.NonPublic para incluir membros não públicos (ou seja, membros particulares, internos e protegidos) na pesquisa.

O seguinte BindingFlags sinalizadores de modificador podem ser usados para alterar como a pesquisa funciona:

  • BindingFlags.DeclaredOnly para pesquisar apenas os membros declarados no Type, não os membros que foram simplesmente herdados.

Consulte System.Reflection.BindingFlags para obter mais informações.

Os valores válidos para MemberType são definidos em MemberInfo. Se nenhum tais membros forem encontrados, uma matriz vazia é retornada.

Para obter o inicializador de classe (cctor) usando esse método, você deve especificar BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic no Visual Basic). Você também pode obter o inicializador de classe usando o TypeInitializer propriedade.

Se o atual Type representa um parâmetro de tipo de um tipo genérico ou método genérico, FindMembers processa todos os membros declarados pela restrição de classe e as restrições de interface do parâmetro de tipo.

O exemplo a seguir localiza todos os membros em uma classe que correspondem aos critérios de pesquisa especificados e, em seguida, exibe os membros correspondentes.

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
Disponível desde 1.1
Silverlight
Disponível desde 2.0
Windows Phone Silverlight
Disponível desde 7.0
Retornar ao início
Mostrar: