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

Type.GetNestedTypes 메서드 (BindingFlags)

파생 클래스에서 재정의된 경우 지정된 바인딩 제약 조건을 사용하여 현재 Type에 중첩된 형식을 검색합니다.

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

public abstract Type[] GetNestedTypes (
	BindingFlags bindingAttr
)
public abstract Type[] GetNestedTypes (
	BindingFlags bindingAttr
)
public abstract function GetNestedTypes (
	bindingAttr : BindingFlags
) : Type[]

매개 변수

bindingAttr

검색 방법을 지정하는 하나 이상의 BindingFlags로 구성된 비트 마스크입니다.

- 또는 -

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

반환 값

지정된 바인딩 제약 조건과 일치하는 현재 Type에 중첩된 모든 형식을 나타내는 Type 개체의 배열이거나(검색은 재귀적이 아님), 바인딩 제약 조건과 일치하는 중첩 형식이 없으면 Type 형식의 빈 배열입니다.

중첩 형식의 검색은 재귀적이 아닙니다.

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

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

  • 검색에 public 중첩 형식을 포함하려면 BindingFlags.Public을 지정합니다.

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

이 메서드는 현재 형식의 중첩 형식만 반환합니다. 상속된 형식의 계층 구조는 검색하지 않습니다. 상속된 형식에 중첩된 형식을 찾으려면 상속 계층 구조를 검색해야 합니다.

BindingFlags.InstanceBindingFlags.Static은 무시됩니다.

이 메서드를 호출할 때 BindingFlags.Public 플래그나 BindingFlags.NonPublic 플래그만 사용해도 지정된 중첩 형식이 반환되므로 다른 플래그는 사용할 필요가 없습니다.

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

현재 Type이 제네릭 형식 또는 제네릭 메서드 정의의 형식 매개 변수를 나타내는 경우 이 메서드는 클래스 제약 조건의 중첩 형식을 검색합니다.

중첩 형식이 제네릭이면 이 메서드는 제네릭 형식 정의를 반환합니다. 바깥쪽 제네릭 형식이 폐쇄형 생성 형식인 경우에도 마찬가지입니다.

Note참고

현재 Type이 C#, Visual Basic 또는 C++에 정의된 제네릭 형식을 나타내는 경우 중첩 형식은 고유한 제네릭 매개 변수가 없더라도 모두 제네릭입니다. 동적 어셈블리에 정의되었거나 MSIL 어셈블러(Ilasm.exe)로 컴파일된 중첩 형식의 경우에는 제네릭이 아닐 수도 있습니다.

중첩 제네릭 형식과 제네릭 형식 정의에서 중첩 제네릭 형식을 생성하는 방법에 대한 자세한 내용은 MakeGenericType을 참조하십시오.

다음 예제에서는 중첩 public 클래스 두 개와 중첩 protected 클래스 두 개를 만들고 지정된 바인딩 제약 조건과 일치하는 클래스 정보를 표시합니다.


using System;
using System.Reflection;
using System.Reflection.Emit;

// Create a class with two nested public classes and two nested protected classes.
public class MyTypeClass
{
    public class Myclass1
    {
    }
    public class Myclass2 
    {
    }
    protected class MyClass3
    {
    }
    protected class MyClass4
    {
    }
}

public class TypeMain
{
    public static void Main() 
    {
        Type myType =(typeof(MyTypeClass));
        // Get the public nested classes.
        Type[] myTypeArray = myType.GetNestedTypes(BindingFlags.Public|BindingFlags.Instance);
        Console.WriteLine("The number of nested public classes is {0}.", myTypeArray.Length);
        // Display all the public nested classes.
        DisplayTypeInfo(myTypeArray);
        // Get the nonpublic nested classes.
        Type[] myTypeArray1 = myType.GetNestedTypes(BindingFlags.NonPublic|BindingFlags.Instance);
        Console.WriteLine("The number of nested protected classes is {0}.", myTypeArray1.Length);
        // Display all the nonpublic nested classes.
        DisplayTypeInfo(myTypeArray1);		
    }
    public static void DisplayTypeInfo(Type[] myArrayType)
    {
        // Display the information for all the nested classes.
        for(int i=0;i<myArrayType.Length;i++)
        {
            Type myType = (Type)myArrayType[i];
            Console.WriteLine("The name of the nested class is {0}.", myType.ToString());
        }
    }

import System.*;
import System.Reflection.*;
import System.Reflection.Emit.*;

// Create a class with two nested public classes and 
//two nested protected classes.
public class MyTypeClass
{
    public class Myclass1
    {
    } //Myclass1
   
    public class Myclass2
    {
    } //Myclass2
   
    protected class MyClass3
    {
    } //MyClass3
   
    protected class MyClass4
    {
    } //MyClass4
} //MyTypeClass

public class TypeMain
{
    public static void main(String[] args)
    {
        Type myType = MyTypeClass.class.ToType();
        // Get the public nested classes.
        Type myTypeArray[] = myType.GetNestedTypes(BindingFlags.Public |
            BindingFlags.Instance);
        Console.WriteLine("The number of nested public classes is {0}.",
            (Int32)myTypeArray.get_Length());
        // Display all the public nested classes.
        DisplayTypeInfo(myTypeArray);
        // Get the nonpublic nested classes.
        Type myTypeArray1[] = myType.GetNestedTypes(BindingFlags.NonPublic |
            BindingFlags.Instance);
        Console.WriteLine("The number of nested protected classes is {0}.",
            (Int32)myTypeArray1.get_Length());
        // Display all the nonpublic nested classes.
        DisplayTypeInfo(myTypeArray1);
    } //main

    public static void DisplayTypeInfo(Type myArrayType[])
    {
        // Display the information for all the nested classes.
        for (int i = 0; i < myArrayType.get_Length(); i++) {
            Type myType = (Type)myArrayType.get_Item(i);
            Console.WriteLine("The name of the nested class is {0}.",
                myType.ToString());
        }
    } //DisplayTypeInfo
} //TypeMain

  • ReflectionPermission  public이 아닌 메서드를 리플렉션하는 데 필요한 권한입니다. 연관된 열거형: ReflectionPermissionFlag.MemberAccess, ReflectionPermissionFlag.TypeInformation

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에서 지원

.NET Compact Framework

2.0, 1.0에서 지원
표시: