Type.FindMembers(MemberTypes, BindingFlags, MemberFilter, Object) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
지정된 멤버 형식의 MemberInfo 개체에 대한 필터링된 배열을 반환합니다.
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()
매개 변수
- memberType
- MemberTypes
검색할 멤버 형식을 나타내는 열거형 값의 비트 조합입니다.
- filter
- MemberFilter
비교를 수행하여 현재 검사 중인 멤버가 true
와 일치하면 filterCriteria
이고, 그렇지 않으면 false
인 대리자입니다.
- filterCriteria
- Object
MemberInfo
개체의 배열에 멤버가 반환되는지를 결정하는 검색 조건입니다.
FieldAttributes
, MethodAttributes
및 MethodImplAttributes
의 필드는 이 클래스에서 제공하는 FilterAttribute
대리자와 함께 사용할 수 있습니다.
반환
지정된 멤버 형식의 MemberInfo 개체에 대한 필터링된 배열입니다.
또는
현재 Type에 필터 조건과 일치하는 memberType
형식의 멤버가 없으면 빈 배열입니다.
구현
예외
filter
이(가) null
인 경우
예제
다음 예제에서는 지정된 검색 조건과 일치하는 클래스의 모든 멤버를 찾은 다음 일치하는 멤버를 표시합니다.
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)
설명
이 메서드는 파생 클래스로 재정의할 수 있습니다.
멤버에는 속성, 메서드, 필드, 이벤트 등이 포함됩니다.
메서드가 FindMembers
멤버 정보를 성공적으로 검색하려면 인수에 bindingAttr
및 중 BindingFlags.Instance 하나 이상과 및 BindingFlags.StaticBindingFlags.Public중 BindingFlags.NonPublic 하나 이상이 포함되어야 합니다.
다음 BindingFlags 필터 플래그를 사용하여 검색에 포함할 멤버를 정의할 수 있습니다.
검색에 instance 멤버를 포함하도록 지정
BindingFlags.Instance
합니다.검색에 정적 멤버를 포함하도록 지정
BindingFlags.Static
합니다.검색에 공용 멤버를 포함하도록 지정
BindingFlags.Public
합니다.비공용 멤버(즉, 프라이빗, 내부 및 보호된 멤버)를 검색에 포함하도록 지정
BindingFlags.NonPublic
합니다.
다음 BindingFlags 한정자 플래그를 사용하여 검색 작동 방식을 변경할 수 있습니다.
-
BindingFlags.DeclaredOnly
에 선언된 Type멤버만 검색하려면 이고, 단순히 상속된 멤버는 검색하지 않습니다.
자세한 내용은 System.Reflection.BindingFlags를 참조하세요.
이 메서드를 사용하여 클래스 이니셜라이저(정적 생성자)를 얻으려면 (BindingFlags.NonPublicBindingFlags.StaticOr
Visual Basic의 경우)을 지정 BindingFlags.Static | BindingFlags.NonPublic 해야 합니다. 속성을 사용하여 클래스 이니셜라이저를 TypeInitializer 가져올 수도 있습니다.
현재 Type 가 제네릭 형식 또는 제네릭 메서드의 형식 매개 변수를 나타내는 경우 클래스 FindMembers 제약 조건 및 형식 매개 변수의 인터페이스 제약 조건으로 선언된 멤버를 처리합니다.
인수는 filter
형식 MemberFilter의 사용자 지정 대리자이거나 다음 미리 정의된 대리자 중 하나일 수 있습니다.
Type.FilterAttribute, , 또는 비트 마스크를 값으로
filterCriteria
사용합니다FieldAttributesMethodAttributes.MethodImplAttributesType.FilterName에 전달된 문자열을 사용하여 각 멤버 이름의 대/소문자를 구분하는 비교를
filterCriteria
수행하는 입니다.Type.FilterNameIgnoreCase- 에 전달된 문자열을 사용하여 각 멤버 이름의 대/소문자를 구분하지 않는 비교를
filterCriteria
수행합니다.
적용 대상
추가 정보
.NET