次の方法で共有


Type.GetNestedTypes メソッド (BindingFlags)

派生クラスによってオーバーライドされた場合、指定したバインディング制約を使用して、現在の Type 内で入れ子になっている型を検索します。

Overloads Public MustOverride Function GetNestedTypes( _
   ByVal bindingAttr As BindingFlags _) As Type()
[C#]
public abstract Type[] GetNestedTypes(BindingFlagsbindingAttr);
[C++]
public: virtual Type* GetNestedTypes(BindingFlagsbindingAttr) [] = 0;
[JScript]
public abstract function GetNestedTypes(
   bindingAttr : BindingFlags) : Type[];

パラメータ

  • bindingAttr
    検索の実行方法を指定する 1 つ以上の BindingFlags から成るビット マスク。

    または

    null 参照 (Visual Basic では Nothing) を返す 0。

戻り値

現在の Type 内で入れ子になっていて、指定したバインディング制約に一致するすべての型を表す Type オブジェクトの配列。

または

現在の Type 内で入れ子になっている型が存在しないか、または入れ子になっている型の中にバインディング制約に一致するものが存在しない場合は、 Type 型の空の配列。

解説

次の BindingFlags フィルタ フラグは、入れ子になっている型で、検索対象に含める型を定義するために使用できます。

  • 戻り値を取得するには、 BindingFlags.Instance または BindingFlags.Static のいずれかを指定する必要があります。
  • パブリックで入れ子になっている型を検索対象に含めるための BindingFlags.Public を指定します。
  • 検索対象にパブリックではない入れ子になっている型 (つまり、プライベート メンバやプロテクト メンバ) を含めるための BindingFlags.NonPublic を指定します。
  • 入れ子になっている静的型を検索対象に含めるための BindingFlags.FlattenHierarchy を指定します。

次の BindingFlags 修飾フラグは、検索方法を変更するために使用できます。

  • Type で宣言されている入れ子になった型だけを検索するための BindingFlags.DeclaredOnly 。単に継承されただけの入れ子になった型は検索されません。

指定した入れ子になった型を返すには、 Public フラグだけか、または NonPublic フラグだけを指定してこのメソッドを呼び出します。他のフラグを指定する必要はありません。

詳細については、「 System.Reflection.BindingFlags 」を参照してください。

使用例

[Visual Basic, C#, C++] 入れ子になったパブリック クラスとプロテクト クラスをそれぞれ 2 つずつ作成し、指定したバインディング制約に一致するクラスの情報を表示する例を次に示します。

 

Imports System
Imports System.Reflection
Imports System.Reflection.Emit
Imports Microsoft.VisualBasic

' Create a class with name 'MyTypeClass' with three properties.
Public Class MyTypeClass

    Public Class Myclass1
    End Class 'Myclass1


    Public Class Myclass2
    End Class 'Myclass2


    Protected Class MyClass3
    End Class 'MyClass3

    Protected Class MyClass4
    End Class 'MyClass4
End Class 'MyTypeClass


Public Class TypeMain

    Public Shared Sub Main()

        Dim myType As Type = GetType(MyTypeClass)
        ' Get the public nested classes.
        Dim myTypeArray As Type() = myType.GetNestedTypes((BindingFlags.Public Or BindingFlags.Instance))
        Console.WriteLine("The number of public nested classes is {0}.", myTypeArray.Length.ToString())
        ' Display all the public nested classes.
        DisplayTypeInfo(myTypeArray)
        ' Get the nonpublic nested classes.
        Dim myTypeArray1 As Type() = myType.GetNestedTypes((BindingFlags.NonPublic Or BindingFlags.Instance))
        Console.WriteLine("The number of protected nested classes is {0}.", myTypeArray1.Length.ToString())
        ' Display  the information for all nested classes.
        DisplayTypeInfo(myTypeArray1)
    End Sub 'Main

    Public Shared Sub DisplayTypeInfo(ByVal myArrayType() As Type)
        ' Display the information for all nested classes.
        Dim i As Integer
        For i = 0 To myArrayType.Length - 1
            Dim myType As Type = CType(myArrayType(i), Type)
            Console.WriteLine("The name of the nested class is {0}.", myType.ToString())
        Next i
    End Sub 'DisplayTypeInfo
End Class 'TypeMain 

[C#] 

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

[C++] 

#using <mscorlib.dll>

using namespace System;
using namespace System::Reflection;
using namespace System::Reflection::Emit;

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

void DisplayTypeInfo(Type* myArrayType[]) {
   // Display the information for all the nested classes.
   for (int i=0;i<myArrayType->Length;i++) {
      Type*  myType = myArrayType[i];
      Console::WriteLine(S"The name of the nested class is {0}.", myType);
   }
}

int main() {
   Type* myType =(__typeof(MyTypeClass));
   // Get the public nested classes.
   Type*  myTypeArray[] = myType->GetNestedTypes(
      static_cast<BindingFlags>(BindingFlags::Public|BindingFlags::Instance));
   Console::WriteLine(S"The number of nested public classes is {0}.",
      __box( myTypeArray->Length));
   // Display all the public nested classes.
   DisplayTypeInfo(myTypeArray);
   // Get the nonpublic nested classes.
   Type*  myTypeArray1[] = myType->GetNestedTypes(
      static_cast<BindingFlags>(BindingFlags::NonPublic|BindingFlags::Instance));
   Console::WriteLine(S"The number of nested protected classes is {0}.",
      __box(  myTypeArray1->Length));
   // Display all the nonpublic nested classes.
   DisplayTypeInfo(myTypeArray1);
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard

.NET Framework セキュリティ:

参照

Type クラス | Type メンバ | System 名前空間 | Type.GetNestedTypes オーバーロードの一覧 | BindingFlags | DefaultBinder | GetNestedType