MethodInfo.GetGenericArguments MethodInfo.GetGenericArguments MethodInfo.GetGenericArguments MethodInfo.GetGenericArguments Method

定義

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

public:
 override cli::array <Type ^> ^ GetGenericArguments();
[System.Runtime.InteropServices.ComVisible(true)]
public override Type[] GetGenericArguments ();
override this.GetGenericArguments : unit -> Type[]
Public Overrides Function GetGenericArguments () As Type()

戻り値

Type[]

ジェネリック メソッドの型引数またはジェネリック メソッド定義の型パラメーターを表す Type オブジェクトの配列。An array of Type objects that represent the type arguments of a generic method or the type parameters of a generic method definition. 現在のメソッドがジェネリック メソッドではない場合は、空の配列を返します。Returns an empty array if the current method is not a generic method.

例外

このメソッドはサポートされていません。This method is not supported.

次のコード例では、ジェネリック メソッドの型引数を取得し、それらを表示する方法を示します。The following code example shows how to get the type arguments of a generic method and display them.

この例が示されている例の一部、MakeGenericMethodメソッド。This example is part of a larger example provided for the MakeGenericMethod method.

// If this is a generic method, display its type arguments.
//
if (mi->IsGenericMethod)
{
    array<Type^>^ typeArguments = mi->GetGenericArguments();

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

    for each (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);
        }
    }
}
// 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);
        }
    }
}
' If this is a generic method, display its type arguments.
'
If mi.IsGenericMethod Then
    Dim typeArguments As Type() = mi.GetGenericArguments()
    
    Console.WriteLine(vbTab & "List type arguments ({0}):", _
        typeArguments.Length)
    
    For Each tParam As Type In typeArguments
        ' IsGenericParameter is true only for generic type
        ' parameters.
        '
        If tParam.IsGenericParameter Then
            Console.WriteLine(vbTab & vbTab _
                & "{0}  parameter position: {1}" _
                & vbCrLf & vbTab & vbTab _
                & "   declaring method: {2}", _
                tParam,  _
                tParam.GenericParameterPosition, _
                tParam.DeclaringMethod)
        Else
            Console.WriteLine(vbTab & vbTab & tParam.ToString())
        End If
    Next tParam
End If

注釈

返される配列の要素では、ジェネリック メソッドの型パラメーターの一覧に表示される順序で。The elements of the returned array are in the order in which they appear in the list of type parameters for the generic method.

  • 現在のメソッドがクローズ構築されたメソッドの場合 (つまり、ContainsGenericParametersプロパティから返さfalse)、によって返される配列、GetGenericArgumentsメソッドがジェネリック メソッドのジェネリック型パラメーターに割り当てられている型が含まれています定義。If the current method is a closed constructed method (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 method definition.

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

  • 現在のメソッドがオープン構築されたメソッドの場合 (つまり、ContainsGenericParametersプロパティを返しますtrue) 特定の種類をいくつかの型パラメーターと型に割り当てられているのは、外側のジェネリック型パラメーターを他の種類に割り当てられている。パラメーターの型と型の両方の配列に含まれるパラメーター。If the current method is an open constructed method (that is, the ContainsGenericParameters property returns true) in which specific types have been assigned to some type parameters and type parameters of enclosing generic types have been assigned to other type parameters, 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.

ジェネリック メソッドに固有の用語に対するインバリアント条件の一覧を参照してください、IsGenericMethodプロパティ。For a list of the invariant conditions for terms specific to generic methods, see the IsGenericMethod property. ジェネリック リフレクションで使用されるその他の用語に対するインバリアント条件の一覧を参照して、Type.IsGenericTypeプロパティ。For a list of the invariant conditions for other terms used in generic reflection, see the Type.IsGenericType property.

適用対象

こちらもご覧ください