Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Type.FindMembers-Methode: (MemberTypes, BindingFlags, MemberFilter, Object)

 

Veröffentlicht: Oktober 2016

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

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

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

Parameter

memberType
Type: System.Reflection.MemberTypes

Ein Objekt, das den Typ der gesuchten Member angibt.

bindingAttr
Type: System.Reflection.BindingFlags

Eine Bitmaske aus einem oder mehreren BindingFlags, die angeben, wie die Suche durchgeführt wird.

- oder -

0 (null), damit null zurückgegeben wird.

filter
Type: System.Reflection.MemberFilter

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 die Delegaten FilterAttribute, FilterName und FilterNameIgnoreCase dieser Klasse verwenden. Der erste Delegat verwendet als Suchkriterien die Felder von FieldAttributes, MethodAttributes und MethodImplAttributes, die anderen beiden Delegaten verwenden String-Objekte als Suchkriterien.

filterCriteria
Type: System.Object

Die Suchkriterien, die bestimmen, ob ein Member im Array von MemberInfo-Objekten zurückgegeben wird.

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

Rückgabewert

Type: System.Reflection.MemberInfo[]

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.

Exception Condition
ArgumentNullException

filter ist null.

Diese Methode kann durch eine abgeleitete Klasse überschrieben werden.

Member enthalten Eigenschaften, Methoden, Felder, Ereignisse und So weiter.

Die folgenden BindingFlags Filterkennzeichnungen genutzt werden, welche Member in die Suche einbezogen werden:

  • Geben Sie BindingFlags.Instance oder BindingFlags.Static ändern, um einen Rückgabewert zu erhalten.

  • Geben Sie BindingFlags.Instance Instanzmember in die Suche eingeschlossen.

  • Geben Sie BindingFlags.Static auf statische Member in die Suche einbeziehen.

  • Geben Sie BindingFlags.Public auf öffentliche Member in die Suche einbeziehen.

  • Geben Sie BindingFlags.NonPublic auf nicht öffentliche Member (d. h. private, interne und geschützte Member) in die Suche einbeziehen.

Die folgenden BindingFlags Modifiziererflags können verwendet werden, um die ändern, wie die Suche funktioniert:

  • BindingFlags.DeclaredOnlySuche nur die deklarierten Member der Type, nicht die Elemente, die nur geerbt wurden.

Weitere Informationen finden Sie unter System.Reflection.BindingFlags.

Gültige Werte für MemberType im definiert MemberInfo. Wenn keine solchen Member gefunden werden, wird ein leeres Array zurückgegeben.

Um die klasseninitialisierung (".cctor"), die mit dieser Methode zu erhalten, müssen Sie angeben BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic in Visual Basic). Außerdem erhalten Sie, dass die klasseninitialisierung verwenden die TypeInitializer Eigenschaft.

Wenn die aktuelle Type stellt einen Typparameter einer generischen Typ- oder Methodendefinition, FindMembers verarbeitet alle Member deklariert, indem der Class-Einschränkung und die schnittstelleneinschränkungen des Typparameters.

Das folgende Beispiel findet alle Elemente in einer Klasse, die die angegebenen Suchkriterien entsprechen, und zeigt dann die übereinstimmenden Elemente.

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
Verfügbar seit 1.1
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Zurück zum Anfang
Anzeigen: