エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

Type.GetGenericArguments メソッド

2013/12/12

ジェネリック型の型引数またはジェネリック型定義の型パラメーターを表す Type オブジェクトの配列を返します。

Namespace:  System
アセンブリ:  mscorlib (mscorlib.dll 内)

public virtual Type[] GetGenericArguments()

戻り値

型: System.Type []
ジェネリック型の型引数を表す Type オブジェクト。現在の型がジェネリック型でない場合は空の配列を返します。

例外条件
NotSupportedException

呼び出されたメソッドは、基本クラスではサポートされません。派生クラスには実装を指定しなければなりません。

配列の要素は、ジェネリック型の型引数のリスト内に現れる順番どおりに返されます。

  • 現在の型がクローズ構築型である (つまり、ContainsGenericParameters プロパティが false を返す) 場合は、GetGenericArguments メソッドによって返される配列にジェネリック型定義のジェネリック型パラメーターに割り当てられた型が含まれます。

  • 現在の型がジェネリック型定義である場合は、配列に型パラメーターが含まれます。

  • 現在の型がオープン構築型 (つまり、ContainsGenericParameters プロパティが true を返す) である場合は、すべての型パラメーターおよび包含するジェネリック型またはジェネリック メソッドの型パラメーターに対して、特定の型が割り当てられていることはないので、配列に両方の型および型パラメーターが含まれます。IsGenericParameter プロパティを使用して識別します。このシナリオの詳細については、ContainsGenericParameters プロパティのコード例を参照してください。

ジェネリック リフレクションで使用する用語に関する一定の条件の一覧については、IsGenericType プロパティの解説を参照してください。

GetGenericArguments メソッドを使用し、構築型の型引数およびそのジェネリック型定義の型パラメーターを表示するコード例を次に示します。

次のコード例は IsGenericTypeDefinition プロパティの例の一部です。サンプル出力については、その例を参照してください。


if (t.IsGenericType)
{
   // If this is a generic type, display the type arguments.
   //
   Type[] typeArguments = t.GetGenericArguments();

   outputBlock.Text += String.Format("\tList type arguments ({0}):",
       typeArguments.Length) + "\n";

   foreach (Type tParam in typeArguments)
   {
      // If this is a type parameter, display its
      // position.
      //
      if (tParam.IsGenericParameter)
      {
         outputBlock.Text += String.Format("\t\t{0}\t(unassigned - parameter position {1})",
             tParam,
             tParam.GenericParameterPosition) + "\n";
      }
      else
      {
         outputBlock.Text += String.Format("\t\t{0}", tParam) + "\n";
      }
   }
}


Windows Phone OS

サポート: 8.0, 7.1, 7.0

表示:
© 2014 Microsoft