Type.GetGenericArguments メソッド

定義

クローズ ジェネリック型の型引数またはジェネリック型定義の型パラメーターを表す Type オブジェクトの配列を返します。Returns an array of Type objects that represent the type arguments of a closed generic type or the type parameters of a generic type definition.

public:
 virtual cli::array <Type ^> ^ GetGenericArguments();
public virtual Type[] GetGenericArguments ();
abstract member GetGenericArguments : unit -> Type[]
override this.GetGenericArguments : unit -> Type[]
Public Overridable Function GetGenericArguments () As Type()

戻り値

Type[]

ジェネリック型の型引数を表す Type オブジェクトの配列。An array of Type objects that represent the type arguments of a generic type. 現在の型がジェネリック型でない場合は空の配列を返します。Returns an empty array if the current type is not a generic type.

例外

呼び出されたメソッドは基底クラスでサポートされていません。The invoked method is not supported in the base class. 派生クラスには実装を指定しなければなりません。Derived classes must provide an implementation.

次のコード例ではGetGenericArguments 、メソッドを使用して、構築された型の型引数と、そのジェネリック型定義の型パラメーターを表示します。The following code example uses the GetGenericArguments method to display the type arguments of a constructed type and the type parameters of its generic type definition.

このコード例は、 IsGenericTypeDefinitionプロパティに対して提供されるより大きな例の一部です。This code example is part of a larger example provided for the IsGenericTypeDefinition property. サンプル出力については、大きな例を参照してください。See the larger example for sample output.

if ( t->IsGenericType )
{
   
   // If this is a generic type, display the type arguments.
   //
   array<Type^>^typeArguments = t->GetGenericArguments();
   Console::WriteLine( L"\tList type arguments ({0}):",
      typeArguments->Length );
   System::Collections::IEnumerator^ myEnum =
      typeArguments->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Type^ tParam = safe_cast<Type^>(myEnum->Current);
      
      // If this is a type parameter, display its
      // position.
      //
      if ( tParam->IsGenericParameter )
      {
         Console::WriteLine(
            L"\t\t{0}\t(unassigned - parameter position {1})",
            tParam, tParam->GenericParameterPosition );
      }
      else
      {
         Console::WriteLine( L"\t\t{0}", tParam );
      }
   }
}
if (t.IsGenericType)
{
    // If this is a generic type, display the type arguments.
    //
    Type[] typeArguments = t.GetGenericArguments();

    Console.WriteLine("\tList type arguments ({0}):", 
        typeArguments.Length);

    foreach (Type tParam in typeArguments)
    {
        // If this is a type parameter, display its
        // position.
        //
        if (tParam.IsGenericParameter)
        {
            Console.WriteLine("\t\t{0}\t(unassigned - parameter position {1})",
                tParam,
                tParam.GenericParameterPosition);
        }
        else
        {
            Console.WriteLine("\t\t{0}", tParam);
        }
    }
}
If t.IsGenericType Then
    ' If this is a generic type, display the type arguments.
    '
    Dim typeArguments As Type() = t.GetGenericArguments()
    
    Console.WriteLine(vbTab & "List type arguments (" _
        & typeArguments.Length & "):")
    
    For Each tParam As Type In typeArguments
        ' If this is a type parameter, display its position.
        '
        If tParam.IsGenericParameter Then
            Console.WriteLine(vbTab & vbTab & tParam.ToString() _
                & vbTab & "(unassigned - parameter position " _
                & tParam.GenericParameterPosition & ")")
        Else
            Console.WriteLine(vbTab & vbTab & tParam.ToString())
        End If
    Next tParam
End If

注釈

配列要素は、ジェネリック型の型引数のリストに出現する順序で返されます。The array elements are returned in the order in which they appear in the list of type arguments for the generic type.

  • 現在の型が構築されたクローズ型の場合 (つまり、ContainsGenericParametersプロパティから返さfalse)、によって返される配列、GetGenericArgumentsメソッドには、ジェネリック型定義のジェネリック型パラメーターに割り当てられている型が含まれています。If the current type is a closed constructed type (that is, the ContainsGenericParameters property returns false), the array returned by the GetGenericArguments method contains the types that have been assigned to the generic type parameters of the generic type definition.

  • 現在の型がジェネリック型の定義の場合、配列には型パラメーターが含まれます。If the current type is a generic type definition, the array contains the type parameters.

  • 現在の型がオープン構築型である場合 (つまり、 ContainsGenericParametersプロパティはを返しtrueます)、特定の型が、外側のジェネリック型または外側のジェネリックメソッドの型パラメーターと型パラメーターのすべてに割り当てられていない場合、配列には型パラメーターと型パラメーターの両方。If the current type is an open constructed type (that is, the ContainsGenericParameters property returns true) in which specific types have not been assigned to all of the type parameters and type parameters of enclosing generic types or methods, the array contains both types and type parameters. プロパティをIsGenericParameter使用して、これらの値を区別します。Use the IsGenericParameter property to tell them apart. このシナリオのデモについては、 ContainsGenericParametersプロパティのコード例を参照してください。For a demonstration of this scenario, see the code example for the ContainsGenericParameters property.

ジェネリック リフレクションで使用する用語に関する一定の条件の一覧については、IsGenericType プロパティの解説を参照してください。For a list of the invariant conditions for terms used in generic reflection, see the IsGenericType property remarks.

適用対象

こちらもご覧ください