このページは役に立ちましたか。
このページのコンテンツについての ご意見をお待ちしております
その他にご意見はありますか。
残り 1500 文字
エクスポート (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

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

または

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

戻り値

指定したバインディング制約と一致する現在の Type で入れ子にされたすべての型を表す Type オブジェクトの配列 (検索は非再帰的)。または、バインディング制約と一致する入れ子にされた型が見つからない場合は、Type 型の空の配列。

入れ子にされた型の検索は、再帰的ではありません。

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

  • 戻り値を取得するには、BindingFlags.Public または BindingFlags.NonPublic のいずれかを指定する必要があります。

  • パブリックで入れ子にされた型を検索対象に含めるための BindingFlags.Public を指定します。

  • 検索対象にパブリックではない入れ子にされた型 (つまり、プライベート メンバやプロテクト メンバ) を含めるための BindingFlags.NonPublic を指定します。

このメソッドは、現在の型の入れ子にされた型のみを返します。継承型の階層は検索しません。継承型に入れ子にされた型を見つけるには、継承階層をウォークする必要があります。

BindingFlags.InstanceBindingFlags.Static は無視されます。

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

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

現在の Type がジェネリック型またはジェネリック メソッドの定義の型パラメータを表している場合、このメソッドはクラス制約の入れ子にされた型を検索します。

入れ子にされた型がジェネリック型である場合、このメソッドはそのジェネリック型定義を返します。包含するジェネリック型がクローズ構築型の場合も同様です。

メモメモ

現在の Type が C#、isual Basic、または C++ で定義されたジェネリック型を表す場合、入れ子にされた型はそれ自体のジェネリック パラメータが存在しなくてもすべてジェネリック型です。ただし、入れ子にされた型が動的アセンブリで定義された場合、または MSIL アセンブラ (Ilasm.exe) によってコンパイルされた場合は、ジェネリック型であるとは限りません。

入れ子になったジェネリック型の詳細、および入れ子になったジェネリック型をジェネリック型定義から構築する方法の詳細については、MakeGenericType のトピックを参照してください。

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


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

コミュニティの追加

追加
表示:
© 2015 Microsoft