내보내기(0) 인쇄
모두 확장

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 형식의 빈 배열입니다.

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

GetNestedTypes 메서드는 사전순 또는 선언순 등의 특정 순서로 형식을 반환하지 않습니다. 형식이 반환되는 순서는 달라질 수 있으므로 코드가 이 순서의 영향을 받지 않아야 합니다.

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

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

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

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

이 메서드는 현재 형식의 중첩 형식만 반환합니다. 현재 형식의 기본 클래스는 검색하지 않습니다. 기본 클래스에 중첩된 형식을 찾으려면 각 수준에서 GetNestedTypes를 호출하여 상속 계층 구조를 검색해야 합니다.

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

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

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

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

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

참고:

현재 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

Windows 98, Windows Server 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

Microsoft .NET Framework 3.0은 Windows Vista, Microsoft Windows XP SP2 및 Windows Server 2003 SP1에서 지원됩니다.

.NET Framework

3.0, 2.0, 1.1, 1.0에서 지원

.NET Compact Framework

2.0, 1.0에서 지원

XNA Framework

1.0에서 지원

커뮤니티 추가 항목

추가
Microsoft는 MSDN 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 진행하고 있습니다. 참여하도록 선택하시면 MSDN 웹 사이트에서 나가실 때 온라인 설문 조사가 표시됩니다.

참여하시겠습니까?
표시:
© 2014 Microsoft