Freigeben über


Type.FindMembers-Methode

Gibt ein gefiltertes Array von MemberInfo-Objekten mit dem angegebenen Membertyp zurück.

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

Syntax

'Declaration
Public Overridable Function FindMembers ( _
    memberType As MemberTypes, _
    bindingAttr As BindingFlags, _
    filter As MemberFilter, _
    filterCriteria As Object _
) As MemberInfo()
'Usage
Dim instance As Type
Dim memberType As MemberTypes
Dim bindingAttr As BindingFlags
Dim filter As MemberFilter
Dim filterCriteria As Object
Dim returnValue As MemberInfo()

returnValue = instance.FindMembers(memberType, bindingAttr, filter, filterCriteria)
public virtual MemberInfo[] FindMembers (
    MemberTypes memberType,
    BindingFlags bindingAttr,
    MemberFilter filter,
    Object filterCriteria
)
public:
virtual array<MemberInfo^>^ FindMembers (
    MemberTypes memberType, 
    BindingFlags bindingAttr, 
    MemberFilter^ filter, 
    Object^ filterCriteria
)
public MemberInfo[] FindMembers (
    MemberTypes memberType, 
    BindingFlags bindingAttr, 
    MemberFilter filter, 
    Object filterCriteria
)
public function FindMembers (
    memberType : MemberTypes, 
    bindingAttr : BindingFlags, 
    filter : MemberFilter, 
    filterCriteria : Object
) : MemberInfo[]

Parameter

  • memberType
    Ein MemberTypes-Objekt, das den Typ der gesuchten Member angibt.
  • bindingAttr
    Eine Bitmaske aus einem oder mehreren BindingFlags, die angeben, wie die Suche durchgeführt wird.

    – oder –

    0 (null), damit NULL (Nothing in Visual Basic) zurückgegeben wird.

  • filter
    Der Delegat, der die Vergleiche durchführt. Der Rückgabewert ist true, wenn der gerade betrachtete Member den filterCriteria entspricht, andernfalls false. Sie können den FilterAttribute-Delegaten, den FilterName-Delegaten und den FilterNameIgnoreCase-Delegaten dieser Klasse verwenden. Der Erste verwendet als Suchkriterien die Felder von FieldAttributes, MethodAttributes und MethodImplAttributes, die anderen beiden Delegaten verwenden String-Objekte als Suchkriterien.
  • filterCriteria
    Die Suchkriterien, die bestimmen, ob ein Member im Array von MemberInfo zurückgegeben wird.

    Die Felder von FieldAttributes, MethodAttributes und MethodImplAttributes können zusammen mit dem FilterAttribute-Delegaten dieser Klasse verwendet werden.

Rückgabewert

Ein gefiltertes Array von MemberInfo-Objekten vom angegebenen Membertyp. – oder – Ein leeres Array vom MemberInfo-Typ, wenn der aktuelle Type keine den Filterkriterien entsprechenden Member vom memberType-Typ besitzt.

Ausnahmen

Ausnahmetyp Bedingung

ArgumentNullException

filter ist NULL (Nothing in Visual Basic).

Hinweise

Diese Methode kann von einer abgeleiteten Klasse überschrieben werden.

Zu den Membern gehören Eigenschaften, Methoden, Felder, Ereignisse usw. Diese Methode gibt NULL (Nothing in Visual Basic) zurück, wenn der angeforderte Typ nicht öffentlich ist und der Aufrufer keine ReflectionPermission zum Reflektieren nicht öffentlicher Objekte außerhalb der aktuellen Assembly besitzt.

Über die folgenden BindingFlags-Filterflags kann festgelegt werden, welche Member in die Suche einbezogen werden:

  • Instance, um Instanzmember in die Suche einzubeziehen.

  • Static, um statische Member in die Suche einzubeziehen.

  • Public, um öffentliche Member in die Suche einzubeziehen.

  • NonPublic, um nicht öffentliche Member, d. h. private und geschützte Member, in die Suche einzubeziehen.

Die Funktionsweise der Suche kann über die folgenden BindingFlags-Modifiziererflags beeinflusst werden:

  • DeclaredOnly, wenn ausschließlich nach für Type deklarierten Membern gesucht werden soll und nicht nach Membern, die nur geerbt wurden.

Weitere Informationen finden Sie unter System.Reflection.BindingFlags.

Gültige Werte für MemberType sind in MemberInfo definiert. Wenn keine entsprechenden Member gefunden wurden, wird ein leeres Array zurückgegeben.

Um den Klasseninitialisierer (.cctor) mit dieser Methode abzurufen, müssen Sie Folgendes angeben: BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic in Visual Basic). Sie können den Klasseninitialisierer auch mit der TypeInitializer-Eigenschaft abrufen.

Wenn der aktuelle Type einen Typparameter eines generischen Typs oder einer generischen Methode darstellt, verarbeitet FindMembers alle Member, die in der Klasseneinschränkung und den Schnittstelleneinschränkungen des Typparameters deklariert sind.

Beispiel

Im folgenden Beispiel werden alle Member in einer Klasse gesucht, die den angegebenen Suchkriterien entsprechen, und anschließend angezeigt.

Imports System
Imports System.Reflection
Imports Microsoft.VisualBasic

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 'Main

    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 'MyFindMembersClass
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;
    }
}
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();
}
import System.*;
import System.Reflection.*;

class MyFindMembersClass
{
    public static void main(String[] args)
    {
        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.get_Item(index).ToString() + "\n");
            }
        }
        catch (System.Exception e) {
            Console.WriteLine("Exception : " + e.ToString());
        }
    } //main

    public static boolean DelegateToSearchCriteria(MemberInfo objMemberInfo,
        Object objSearch)
    {
        // Compare the name of the member function with the filter criteria.
        if (objMemberInfo.get_Name().ToString().Equals(objSearch.ToString())) {
            return true;
        }
        else {
            return false;
        }
    } //DelegateToSearchCriteria
} //MyFindMembersClass

.NET Framework-Sicherheit

Plattformen

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

Siehe auch

Referenz

Type-Klasse
Type-Member
System-Namespace
MemberInfo
BindingFlags
DefaultBinder
ReflectionPermission
GetMember
GetMembers
GetDefaultMembers