この記事の英語版を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

Type.GetNestedTypes メソッド

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

名前空間:  System
アセンブリ :  mscorlib (mscorlib.dll 内)

public abstract Type[] GetNestedTypes(
	BindingFlags bindingAttr
)

パラメーター

bindingAttr
型 : System.Reflection.BindingFlags
検索の実行方法を指定する 1 つ以上の BindingFlags から成るビットマスク。
または
null を返す 0。

戻り値

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

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

GetNestedTypes メソッドから返される型は、アルファベット順や宣言順などの特定の順序で返されるわけではありません。 したがって、型が返される順序に依存するようなコードは避ける必要があります。

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

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

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

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

このメソッドは、現在の型の入れ子にされた型のみを返します。 現在の型の基本クラスは検索しません。 基本型に入れ子にされた型を見つけるには、各レベルで GetNestedTypes を呼び出して、継承階層を 1 レベルごとに調べる必要があります。

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

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

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

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

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

メモメモ :

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

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

プラットフォーム メモ

Silverlight for Windows Phone Silverlight for Windows Phone
GetNestedTypes は、BindingFlags 値に関係なく、入れ子にされた型すべてを返します。

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

メモメモ :

この例を実行するには、「Demo メソッドと TextBlock コントロールを使用したコード例のビルド」を参照してください。



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 Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      Type myType = (typeof(MyTypeClass));
      // Get the public nested classes.
      Type[] myTypeArray = myType.GetNestedTypes(BindingFlags.Public | BindingFlags.Instance);
      outputBlock.Text += String.Format("The number of nested public classes is {0}.", myTypeArray.Length) + "\n";
      // Display all the public nested classes.
      DisplayTypeInfo(outputBlock, myTypeArray);
      // Get the nonpublic nested classes.
      Type[] myTypeArray1 = myType.GetNestedTypes(BindingFlags.NonPublic | BindingFlags.Instance);
      outputBlock.Text += String.Format("The number of nested protected classes is {0}.", myTypeArray1.Length) + "\n";
      // Display all the nonpublic nested classes.
      DisplayTypeInfo(outputBlock, myTypeArray1);
   }
   public static void DisplayTypeInfo(System.Windows.Controls.TextBlock outputBlock, Type[] myArrayType)
   {
      // Display the information for all the nested classes.
      for (int i = 0; i < myArrayType.Length; i++)
      {
         Type myType = (Type)myArrayType[i];
         outputBlock.Text += String.Format("The name of the nested class is {0}.", myType.ToString()) + "\n";
      }
   }


Silverlight

サポート対象 : 5、4、3

Silverlight for Windows Phone

サポート対象 : Windows Phone OS 7.1、Windows Phone OS 7.0

XNA Framework

サポート対象 : Xbox 360、Windows Phone OS 7.0

Silverlight でサポートされるオペレーティング システムの詳細については、「サポートされているオペレーティング システムとブラウザー」を参照してください。

コミュニティの追加

追加
表示: