Type.FindMembers(MemberTypes, BindingFlags, MemberFilter, Object) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mengembalikan array objek yang MemberInfo difilter dari jenis anggota yang ditentukan.
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);
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
Kombinasi bitwise dari nilai enumerasi yang menunjukkan jenis anggota yang akan dicari.
- bindingAttr
- BindingFlags
Kombinasi bitwise dari nilai enumerasi yang menentukan bagaimana pencarian dilakukan.
-atau-
Default untuk mengembalikan null
.
- filter
- MemberFilter
Delegasi yang melakukan perbandingan true
, mengembalikan jika anggota yang saat ini diperiksa cocok dengan filterCriteria
dan false
sebaliknya.
- filterCriteria
- Object
Kriteria pencarian yang menentukan apakah anggota dikembalikan dalam array MemberInfo
objek.
Bidang FieldAttributes
, , dan MethodImplAttributes
dapat digunakan bersama dengan delegasi yang FilterAttribute
disediakan MethodAttributes
oleh kelas ini.
Mengembalikan
Array objek yang MemberInfo difilter dari jenis anggota yang ditentukan.
-atau-
Array kosong jika saat ini Type tidak memiliki anggota tipe memberType
yang cocok dengan kriteria filter.
Penerapan
Pengecualian
filter
adalah null
.
Contoh
Contoh berikut menemukan semua anggota di kelas yang cocok dengan kriteria pencarian yang ditentukan, lalu menampilkan anggota yang cocok.
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();
}
/* The example produces the following output:
Result of FindMembers - Boolean ReferenceEquals(System.Object, System.Object)
*/
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)
*/
open System.Reflection
let delegateToSearchCriteria (objMemberInfo: MemberInfo) (objSearch: obj) =
// Compare the name of the member function with the filter criteria.
string objMemberInfo.Name = string objSearch
let objTest = obj ()
let objType = objTest.GetType ()
try
//Find all static or public methods in the Object class that match the specified name.
let arrayMemberInfo =
objType.FindMembers(MemberTypes.Method, BindingFlags.Public ||| BindingFlags.Static ||| BindingFlags.Instance, MemberFilter delegateToSearchCriteria, "ReferenceEquals")
for info in arrayMemberInfo do
printfn $"Result of FindMembers -\t{info}\n"
with e ->
printfn $"Exception : {e}"
(* The example produces the following output:
Result of FindMembers - Boolean ReferenceEquals(System.Object, System.Object)
*)
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
' The example produces the following output:
'
' Result of FindMembers - Boolean ReferenceEquals(System.Object, System.Object)
Keterangan
Metode ini dapat ditimpa oleh kelas turunan.
Anggota mencakup properti, metode, bidang, peristiwa, dan sebagainya.
FindMembers
Agar metode berhasil mengambil informasi anggota, bindingAttr
argumen harus menyertakan setidaknya satu dari BindingFlags.Instance dan BindingFlags.Static, bersama dengan setidaknya satu dari BindingFlags.NonPublic dan BindingFlags.Public.
Bendera filter berikut BindingFlags dapat digunakan untuk menentukan anggota mana yang akan disertakan dalam pencarian:
Tentukan
BindingFlags.Instance
untuk menyertakan anggota instans dalam pencarian.Tentukan
BindingFlags.Static
untuk menyertakan anggota statis dalam pencarian.Tentukan
BindingFlags.Public
untuk menyertakan anggota publik dalam pencarian.Tentukan
BindingFlags.NonPublic
untuk menyertakan anggota non-publik (yaitu, privat, internal, dan anggota yang dilindungi) dalam pencarian.
Bendera pengubah berikut BindingFlags dapat digunakan untuk mengubah cara kerja pencarian:
-
BindingFlags.DeclaredOnly
untuk mencari hanya anggota yang dinyatakan pada Type, bukan anggota yang hanya diwariskan.
Lihat System.Reflection.BindingFlags untuk informasi lebih lanjut.
Untuk mendapatkan penginisialisasi kelas (konstruktor statis) menggunakan metode ini, Anda harus menentukan BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOr
BindingFlags.NonPublic di Visual Basic). Anda juga bisa mendapatkan penginisialisasi kelas menggunakan TypeInitializer properti .
Jika saat ini Type mewakili parameter jenis jenis generik atau metode generik, FindMembers memproses anggota apa pun yang dinyatakan oleh batasan kelas dan batasan antarmuka parameter jenis.
Argumen filter
dapat berupa delegasi kustom jenis MemberFilter, atau bisa menjadi salah satu delegasi yang telah ditentukan berikut:
Type.FilterAttribute, yang menggunakanFieldAttributes bitmask, MethodAttributes, atau MethodImplAttributes sebagai
filterCriteria
nilai.Type.FilterName, yang melakukan perbandingan peka huruf besar/kecil dari setiap nama anggota dengan string yang diteruskan ke
filterCriteria
.Type.FilterNameIgnoreCase, yang melakukan perbandingan tidak peka huruf besar/kecil dari setiap nama anggota dengan string yang diteruskan ke
filterCriteria
.