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 |
---|---|
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
- ReflectionPermission zum Reflektieren nicht öffentlicher Objekte. Zugeordnete Enumeration: ReflectionPermissionFlag.TypeInformation
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