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

Definition

Gibt ein gefiltertes Array von MemberInfo-Objekten mit dem angegebenen Membertyp zurück.Returns a filtered array of MemberInfo objects of the specified member type.

public:
 virtual cli::array <System::Reflection::MemberInfo ^> ^ FindMembers(System::Reflection::MemberTypes memberType, System::Reflection::BindingFlags bindingAttr, System::Reflection::MemberFilter ^ filter, System::Object ^ filterCriteria);
public virtual System.Reflection.MemberInfo[] FindMembers (System.Reflection.MemberTypes memberType, System.Reflection.BindingFlags bindingAttr, System.Reflection.MemberFilter filter, object filterCriteria);
abstract member FindMembers : System.Reflection.MemberTypes * System.Reflection.BindingFlags * System.Reflection.MemberFilter * obj -> System.Reflection.MemberInfo[]
override this.FindMembers : System.Reflection.MemberTypes * System.Reflection.BindingFlags * System.Reflection.MemberFilter * obj -> System.Reflection.MemberInfo[]
Public Overridable Function FindMembers (memberType As MemberTypes, bindingAttr As BindingFlags, filter As MemberFilter, filterCriteria As Object) As MemberInfo()

Parameter

memberType
MemberTypes MemberTypes MemberTypes MemberTypes

Eine bitweise Kombination von Enumerationswerten, die angibt, welcher Membertyp gesucht werden soll.A bitwise combination of the enumeration values that indicates the type of member to search for.

bindingAttr
BindingFlags BindingFlags BindingFlags BindingFlags

Eine bitweise Kombination der Enumerationswerte, die angeben, wie die Suche durchgeführt wird.A bitwise combination of the enumeration values that specify how the search is conducted.

- oder --or- Default, damit null zurückgegeben wird.Default to return null.

filter
MemberFilter MemberFilter MemberFilter MemberFilter

Der Delegat, der die Vergleiche durchführt. Der Rückgabewert ist true, wenn der gerade betrachtete Member den filterCriteria entspricht, andernfalls false.The delegate that does the comparisons, returning true if the member currently being inspected matches the filterCriteria and false otherwise.

filterCriteria
Object Object Object Object

Die Suchkriterien, die bestimmen, ob ein Member im Array von MemberInfo-Objekten zurückgegeben wird.The search criteria that determines whether a member is returned in the array of MemberInfo objects.

Die Felder von FieldAttributes, MethodAttributes und MethodImplAttributes können zusammen mit dem FilterAttribute-Delegaten dieser Klasse verwendet werden.The fields of FieldAttributes, MethodAttributes, and MethodImplAttributes can be used in conjunction with the FilterAttribute delegate supplied by this class.

Gibt zurück

Ein gefiltertes Array von MemberInfo-Objekten vom angegebenen Membertyp.A filtered array of MemberInfo objects of the specified member type.

- oder --or- Ein leeres Array, wenn der aktuelle Type keine den Filterkriterien entsprechenden Member vom memberType-Typ besitzt.An empty array if the current Type does not have members of type memberType that match the filter criteria.

Implementiert

Ausnahmen

Beispiele

Im folgenden Beispiel werden alle Member einer Klasse gesucht, die den angegebenen Suchkriterien entsprechen, und anschließend werden die übereinstimmenden Member angezeigt.The following example finds all the members in a class that match the specified search criteria, and then displays the matched members.

using namespace System;
using namespace System::Reflection;
ref class MyFindMembersClass
{
public:
   static void Test()
   {
      Object^ objTest = gcnew Object;
      Type^ objType = objTest->GetType();
      array<MemberInfo^>^arrayMemberInfo;
      try
      {
         
         //Find all static or public methods in the Object class that match the specified name.
         arrayMemberInfo = objType->FindMembers( MemberTypes::Method, static_cast<BindingFlags>(BindingFlags::Public | BindingFlags::Static | BindingFlags::Instance), gcnew MemberFilter( DelegateToSearchCriteria ), "ReferenceEquals" );
         for ( int index = 0; index < arrayMemberInfo->Length; index++ )
            Console::WriteLine( "Result of FindMembers -\t {0}", String::Concat( arrayMemberInfo[ index ], "\n" ) );
      }
      catch ( Exception^ e ) 
      {
         Console::WriteLine( "Exception : {0}", e );
      }

   }

   static bool DelegateToSearchCriteria( MemberInfo^ objMemberInfo, Object^ objSearch )
   {
      
      // Compare the name of the member function with the filter criteria.
      if ( objMemberInfo->Name->Equals( objSearch->ToString() ) )
            return true;
      else
            return false;
   }

};

int main()
{
   MyFindMembersClass::Test();
}

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;
    }
}

Imports System.Reflection

Class MyFindMembersClass

    Public Shared Sub Main()
        Dim objTest As New Object()
        Dim objType As Type = objTest.GetType()
        Dim arrayMemberInfo() As MemberInfo
        Try
            'Find all static or public methods in the Object 
            'class that match the specified name.
            arrayMemberInfo = objType.FindMembers(MemberTypes.Method, _
                              BindingFlags.Public Or BindingFlags.Static _
                              Or BindingFlags.Instance, _
                              New MemberFilter(AddressOf DelegateToSearchCriteria), _
                              "ReferenceEquals")

            Dim index As Integer
            For index = 0 To arrayMemberInfo.Length - 1
                Console.WriteLine("Result of FindMembers -" + ControlChars.Tab + _
                               arrayMemberInfo(index).ToString() + ControlChars.Cr)
            Next index
        Catch e As Exception
            Console.WriteLine("Exception : " + e.ToString())
        End Try
    End Sub

    Public Shared Function DelegateToSearchCriteria _
                            (ByVal objMemberInfo As MemberInfo, _
                             ByVal objSearch As Object) As Boolean
        ' Compare the name of the member function with the filter criteria.
        If objMemberInfo.Name.ToString() = objSearch.ToString() Then
            Return True
        Else
            Return False
        End If
    End Function 'DelegateToSearchCriteria 
End Class

Hinweise

Diese Methode kann von einer abgeleiteten Klasse überschrieben werden.This method can be overridden by a derived class.

Member enthalten Eigenschaften, Methoden, Felder, Ereignisse usw.Members include properties, methods, fields, events, and so on.

Damit die FindMembers -Methode Element Informationen erfolgreich abrufen kann, bindingAttr muss das-Argument mindestens einen von BindingFlags.Instance und BindingFlags.Staticsowie mindestens einen von BindingFlags.NonPublic und BindingFlags.Publicenthalten.For the FindMembers method to successfully retrieve member information, the bindingAttr argument must include at least one of BindingFlags.Instance and BindingFlags.Static, along with at least one of BindingFlags.NonPublic and BindingFlags.Public.

Die folgenden BindingFlags Filterflags können verwendet werden, um zu definieren, welche Elemente in die Suche eingeschlossen werden sollen:The following BindingFlags filter flags can be used to define which members to include in the search:

  • Geben BindingFlags.Instance Sie an, um Instanzmember in die Suche einzubeziehen.Specify BindingFlags.Instance to include instance members in the search.

  • Geben BindingFlags.Static Sie an, dass statische Member in die Suche einbezogen werden sollen.Specify BindingFlags.Static to include static members in the search.

  • Geben BindingFlags.Public Sie an, dass öffentliche Member in die Suche einbezogen werden sollen.Specify BindingFlags.Public to include public members in the search.

  • Geben BindingFlags.NonPublic Sie an, dass nicht öffentliche Member in die Suche eingeschlossen werden sollen (d. h. private, interne und geschützte Member).Specify BindingFlags.NonPublic to include non-public members (that is, private, internal, and protected members) in the search.

Die folgenden BindingFlags Modifiziererflags können verwendet werden, um die Funktionsweise der Suche zu ändern:The following BindingFlags modifier flags can be used to change how the search works:

  • BindingFlags.DeclaredOnly, um nur die Member zu durchsuchen Type, die auf dem deklariert sind, nicht Elemente, die einfach geerbt wurden.BindingFlags.DeclaredOnly to search only the members declared on the Type, not members that were simply inherited.

Weitere Informationen finden Sie unter System.Reflection.BindingFlags.See System.Reflection.BindingFlags for more information.

Um mithilfe dieser Methode den Klasseninitialisierer (statischer Konstruktor) zu erhalten, BindingFlags.Static müssenBindingFlags.Static Sie ( | BindingFlags.NonPublic Or BindingFlags.NonPublic in Visual Basic) angeben.To get the class initializer (static constructor) using this method, you must specify BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic in Visual Basic). Sie können den Klasseninitialisierer auch mit der TypeInitializer -Eigenschaft erhalten.You can also get the class initializer using the TypeInitializer property.

Wenn der aktuelle Type einen Typparameter eines generischen Typs oder einer generischen Methode FindMembers darstellt, verarbeitet alle Member, die von der Klassen Einschränkung deklariert werden, und die Schnittstellen Einschränkungen des Typparameters.If the current Type represents a type parameter of a generic type or generic method, FindMembers processes any members declared by the class constraint and the interface constraints of the type parameter.

Das filter Argument kann ein benutzerdefinierter Delegat vom MemberFilterTyp sein, oder es kann sich um einen der folgenden vordefinierten Delegaten handeln:The filter argument can be a custom delegate of type MemberFilter, or it can be one of the following predefined delegates:

Gilt für:

Siehe auch