다음을 통해 공유


Type.FindMembers 메서드

지정된 멤버 형식의 MemberInfo 개체에 대한 필터링된 배열을 반환합니다.

네임스페이스: System
어셈블리: mscorlib(mscorlib.dll)

구문

‘선언
Public Overridable Function FindMembers ( _
    memberType As MemberTypes, _
    bindingAttr As BindingFlags, _
    filter As MemberFilter, _
    filterCriteria As Object _
) As MemberInfo()
‘사용 방법
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[]

매개 변수

  • memberType
    검색할 멤버 형식을 나타내는 MemberTypes 개체입니다.
  • bindingAttr
    검색 방법을 지정하는 하나 이상의 BindingFlags로 구성된 비트 마스크입니다.

    - 또는 -

    0(Null 참조(Visual Basic의 경우 Nothing)를 반환하는 경우)

  • filter
    비교를 수행하여 현재 검사 중인 멤버가 filterCriteria와 일치하면 true이고, 그렇지 않으면 false인 대리자입니다. 이 클래스에서 제공하는 FilterAttribute, FilterNameFilterNameIgnoreCase 대리자를 사용할 수 있습니다. 첫 번째 대리자는 FieldAttributes, MethodAttributesMethodImplAttributes의 필드를 검색 조건으로 사용하고 다른 두 대리자는 String 개체를 검색 조건으로 사용합니다.
  • filterCriteria
    MemberInfo 개체의 배열에 멤버가 반환되는지 여부를 결정하는 검색 조건입니다.

    FieldAttributes, MethodAttributesMethodImplAttributes의 필드는 이 클래스에서 제공하는 FilterAttribute 대리자와 함께 사용할 수 있습니다.

반환 값

지정된 멤버 형식의 MemberInfo 개체에 대한 필터링된 배열입니다. - 또는 - 현재 Type에 필터 조건과 일치하는 memberType 형식의 멤버가 없으면 MemberInfo 형식의 빈 배열입니다.

예외

예외 형식 조건

ArgumentNullException

filter가 Null 참조(Visual Basic의 경우 Nothing)인 경우

설명

이 메서드는 파생된 클래스에서 재정의할 수 있습니다.

멤버에는 속성, 메서드, 필드, 이벤트 등이 포함됩니다. 요청된 형식이 public 형식이 아니고 public 형식이 아닌 개체를 현재 어셈블리의 외부에 리플렉션할 수 있는 ReflectionPermission이 호출자에게 없는 경우 이 메서드는 Null 참조(Visual Basic의 경우 Nothing)를 반환합니다.

다음과 같은 BindingFlags 필터 플래그를 사용하여 검색에 포함할 멤버를 정의할 수 있습니다.

  • 검색에 인스턴스 멤버를 포함하는 Instance

  • 검색에 정적 멤버를 포함하는 Static

  • 검색에 public 멤버를 포함하는 Public

  • 검색에 public이 아닌 멤버, 즉 private 멤버 및 protected 멤버를 포함하는 NonPublic

다음과 같은 BindingFlags 한정자 플래그를 사용하여 검색 작동 방법을 변경할 수 있습니다.

  • 단순히 상속된 멤버는 검색하지 않고 Type에 선언된 멤버만 검색하는 DeclaredOnly

자세한 내용은 System.Reflection.BindingFlags를 참조하십시오.

MemberType에 유효한 값은 MemberInfo에 정의되어 있습니다. 이러한 멤버가 없으면 빈 배열이 반환됩니다.

이 메서드를 사용하여 클래스 이니셜라이저(.cctor)를 가져오려면 BindingFlags.Static | BindingFlags.NonPublic(Visual Basic의 경우 BindingFlags.StaticOrBindingFlags.NonPublic)을 지정해야 합니다. 또한 TypeInitializer 속성을 사용하여 클래스 이니셜라이저를 가져올 수도 있습니다.

현재 Type이 제네릭 형식 또는 제네릭 메서드의 형식 매개 변수를 나타내는 경우 FindMembers는 형식 매개 변수의 클래스 제약 조건과 인터페이스 제약 조건에서 선언된 모든 멤버를 처리합니다.

예제

다음 예제에서는 지정된 검색 기준과 일치하는 모든 멤버를 클래스에서 찾고 일치된 멤버를 표시합니다.

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 보안

플랫폼

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에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

참고 항목

참조

Type 클래스
Type 멤버
System 네임스페이스
MemberInfo
BindingFlags
DefaultBinder
ReflectionPermission
GetMember
GetMembers
GetDefaultMembers