英語で読む

次の方法で共有


MethodInfo.GetGenericArguments メソッド

定義

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

C#
public override Type[] GetGenericArguments();
C#
[System.Runtime.InteropServices.ComVisible(true)]
public override Type[] GetGenericArguments();

戻り値

Type[]

ジェネリック メソッドの型引数またはジェネリック メソッド定義の型パラメーターを表す Type オブジェクトの配列。 現在のメソッドがジェネリック メソッドではない場合は、空の配列を返します。

属性

例外

このメソッドはサポートされていません。

次のコード例は、ジェネリック メソッドの型引数を取得して表示する方法を示しています。

この例は、 メソッドに対して提供されるより大きな例の MakeGenericMethod 一部です。

C#
// If this is a generic method, display its type arguments.
//
if (mi.IsGenericMethod)
{
    Type[] typeArguments = mi.GetGenericArguments();

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

    foreach (Type tParam in typeArguments)
    {
        // IsGenericParameter is true only for generic type
        // parameters.
        //
        if (tParam.IsGenericParameter)
        {
            Console.WriteLine("\t\t{0}  parameter position {1}" +
                "\n\t\t   declaring method: {2}",
                tParam,
                tParam.GenericParameterPosition,
                tParam.DeclaringMethod);
        }
        else
        {
            Console.WriteLine("\t\t{0}", tParam);
        }
    }
}

注釈

返される配列の要素は、ジェネリック メソッドの型パラメーターの一覧に表示される順序になります。

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

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

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

ジェネリック メソッドに固有の用語の不変条件の一覧については、 プロパティを IsGenericMethod 参照してください。 ジェネリック リフレクションで使用される他の用語の不変条件の一覧については、 プロパティを Type.IsGenericType 参照してください。

適用対象

製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.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, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

こちらもご覧ください