Type.FindMembers(MemberTypes, BindingFlags, MemberFilter, Object) Metoda

Definicja

Zwraca filtrowaną tablicę MemberInfo obiektów określonego typu elementu członkowskiego.

C#
public virtual System.Reflection.MemberInfo[] FindMembers(System.Reflection.MemberTypes memberType, System.Reflection.BindingFlags bindingAttr, System.Reflection.MemberFilter? filter, object? filterCriteria);
C#
public virtual System.Reflection.MemberInfo[] FindMembers(System.Reflection.MemberTypes memberType, System.Reflection.BindingFlags bindingAttr, System.Reflection.MemberFilter filter, object filterCriteria);

Parametry

memberType
MemberTypes

Bitowa kombinacja wartości wyliczenia, która wskazuje typ elementu członkowskiego do wyszukania.

bindingAttr
BindingFlags

Bitowa kombinacja wartości wyliczenia, które określają sposób przeprowadzania wyszukiwania.

-lub-

Default , aby zwrócić wartość null.

filter
MemberFilter

Delegat, który wykonuje porównania, zwracając true , jeśli element członkowski aktualnie sprawdzany jest zgodny z elementem filterCriteria i false w inny sposób.

filterCriteria
Object

Kryteria wyszukiwania określające, czy element członkowski jest zwracany w tablicy MemberInfo obiektów.

Pola FieldAttributes, MethodAttributesi MethodImplAttributes mogą być używane w połączeniu z delegatem FilterAttribute dostarczonym przez tę klasę.

Zwraca

Filtrowana tablica MemberInfo obiektów określonego typu elementu członkowskiego.

-lub-

Pusta tablica, jeśli bieżąca Type nie ma elementów członkowskich typu memberType , które spełniają kryteria filtrowania.

Implementuje

Wyjątki

filter to null.

Przykłady

Poniższy przykład znajduje wszystkie składowe w klasie, które spełniają określone kryteria wyszukiwania, a następnie wyświetla dopasowane składowe.

C#
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;
    }
}
/* The example produces the following output:

Result of FindMembers - Boolean ReferenceEquals(System.Object, System.Object)
*/

Uwagi

Metoda ta może być zastąpiona przez klasę pochodną.

Elementy członkowskie zawierają właściwości, metody, pola, zdarzenia i tak dalej.

Aby metoda pomyślnie pobrać informacje o elemencie FindMembers członkowskim, bindingAttr argument musi zawierać co najmniej jedną BindingFlags.PublicBindingFlags.NonPublic z BindingFlags.Instance wartości i BindingFlags.Staticoraz .

Następujące BindingFlags flagi filtru mogą służyć do definiowania elementów członkowskich do uwzględnienia w wyszukiwaniu:

  • Określ BindingFlags.Instance , aby uwzględnić członków wystąpienia w wyszukiwaniu.

  • Określ BindingFlags.Static , aby uwzględnić statyczne elementy członkowskie w wyszukiwaniu.

  • Określ BindingFlags.Public , aby uwzględnić członków publicznych w wyszukiwaniu.

  • Określ BindingFlags.NonPublic , aby uwzględnić w wyszukiwaniu członków innych niż publiczne (czyli prywatne, wewnętrzne i chronione elementy członkowskie).

Następujące BindingFlags flagi modyfikatora mogą służyć do zmiany sposobu działania wyszukiwania:

  • BindingFlags.DeclaredOnly aby wyszukać tylko elementy członkowskie zadeklarowane w elemecie Type, a nie na elementach członkowskich, które zostały po prostu odziedziczone.

Aby uzyskać więcej informacji, zobacz System.Reflection.BindingFlags.

Aby uzyskać inicjator klasy (konstruktor statyczny) przy użyciu tej metody, należy określić BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic w Visual Basic). Inicjator klasy można również pobrać przy użyciu TypeInitializer właściwości .

Jeśli bieżący Type reprezentuje parametr typu typu typu lub metody ogólnej, FindMembers przetwarza wszystkie elementy członkowskie zadeklarowane przez ograniczenie klasy i ograniczenia interfejsu parametru typu.

Argumentem filter może być niestandardowy delegat typu MemberFilterlub może być jednym z następujących wstępnie zdefiniowanych delegatów:

Dotyczy

Produkt Wersje
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.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, 4.8.1
.NET Standard 2.0, 2.1

Zobacz też