英語で読む

次の方法で共有


Type.GetGenericArguments メソッド

定義

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

C#
public virtual Type[] GetGenericArguments ();

戻り値

Type[]

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

例外

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

次のコード例では、 メソッドを使用して、構築された型の型引数とそのジェネリック型定義の型 GetGenericArguments パラメーターを表示します。

このコード例は、 プロパティに用意されているより大きな例の一部 IsGenericTypeDefinition です。 サンプル出力については、より大きな例を参照してください。

C#
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);
        }
    }
}

注釈

配列要素は、ジェネリック型の型引数のリストに表示される順序で返されます。

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

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

  • 現在の型が、ジェネリック型またはメソッドを囲むすべての型パラメーターと型パラメーターに特定の型が割り当てられていないオープン構築型 (つまり、 プロパティが を返す) の場合、配列には型パラメーターと型パラメーターの両方が含まれます。 ContainsGenericParameters true プロパティを IsGenericParameter 使用して、それらを分けます。 このシナリオのデモについては、 プロパティのコード例を参照 ContainsGenericParameters してください。

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

適用対象

製品 バージョン
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 2.0, 2.1

こちらもご覧ください