이 설명서는 보관되지만 유지 되지 않습니다.

Type.FindMembers 메서드

업데이트: 2007년 11월

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

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

public virtual 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
형식: System.Reflection.MemberTypes
검색할 멤버 형식을 나타내는 MemberTypes 개체입니다.
bindingAttr
형식: System.Reflection.BindingFlags
검색 방법을 지정하는 하나 이상의 BindingFlags로 구성된 비트 마스크입니다.
- 또는 -
0(null을 반환하는 경우)
filter
형식: System.Reflection.MemberFilter
비교를 수행하여 현재 검사 중인 멤버가 filterCriteria와 일치하면 true이고, 그렇지 않으면 false인 대리자입니다. 이 클래스에서 제공하는 FilterAttribute, FilterNameFilterNameIgnoreCase 대리자를 사용할 수 있습니다. 첫 번째 대리자는 FieldAttributes, MethodAttributesMethodImplAttributes의 필드를 검색 조건으로 사용하고 다른 두 대리자는 String 개체를 검색 조건으로 사용합니다.
filterCriteria
형식: System.Object
MemberInfo 개체의 배열에 멤버가 반환되는지 여부를 결정하는 검색 조건입니다.
FieldAttributes, MethodAttributesMethodImplAttributes의 필드는 이 클래스에서 제공하는 FilterAttribute 대리자와 함께 사용할 수 있습니다.

반환 값

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

구현

_Type.FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)

예외상황
ArgumentNullException

filternull인 경우

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

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

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

  • 반환 값을 가져오려면 BindingFlags.Instance 또는 BindingFlags.Static을 지정해야 합니다.

  • 검색에 인스턴스 멤버를 포함하는 BindingFlags.Instance를 지정합니다.

  • 검색에 정적 멤버를 포함하는 BindingFlags.Static을 지정합니다.

  • 검색에 public 멤버를 포함하려면 BindingFlags.Public을 지정합니다.

  • 검색에 public이 아닌 멤버, 즉 private 멤버 및 protected 멤버를 포함하려면 BindingFlags.NonPublic을 지정합니다.

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

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

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

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

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

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

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

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;
    }
}


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


Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 및 .NET Compact Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.

.NET Framework

3.5, 3.0, 2.0, 1.1, 1.0에서 지원
표시: