MethodInfo.GetGenericArguments Méthode

Définition

Retourne un tableau d'objets Type qui représentent les arguments de type d'une méthode générique ou les paramètres de type d'une définition de méthode générique.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()

Retours

Type[]

Tableau d'objets Type qui représentent les arguments de type d'une méthode générique ou les paramètres de type d'une définition de méthode générique.An array of Type objects that represent the type arguments of a generic method or the type parameters of a generic method definition. Retourne un tableau vide si la méthode actuelle n'est pas une méthode générique.Returns an empty array if the current method is not a generic method.

Attributs

Exceptions

Cette méthode n'est pas prise en charge.This method is not supported.

Exemples

L’exemple de code suivant montre comment obtenir les arguments de type d’une méthode générique et les afficher.The following code example shows how to get the type arguments of a generic method and display them.

Cet exemple fait partie d’un exemple plus complet fourni pour MakeGenericMethod la méthode.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

Remarques

Les éléments du tableau retourné sont dans l’ordre dans lequel ils apparaissent dans la liste des paramètres de type pour la méthode générique.The elements of the returned array are in the order in which they appear in the list of type parameters for the generic method.

  • Si la méthode actuelle est une méthode construite fermée (autrement dit, si ContainsGenericParameters la propriété falseretourne), le tableau retourné par GetGenericArguments la méthode contient les types qui ont été assignés aux paramètres de type générique de la méthode générique. définition.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.

  • Si la méthode actuelle est une définition de méthode générique, le tableau contient les paramètres de type.If the current method is a generic method definition, the array contains the type parameters.

  • Si la méthode actuelle est une méthode construite ouverte (autrement dit, la ContainsGenericParameters propriété retourne true) dans laquelle des types spécifiques ont été assignés à certains paramètres de type et les paramètres de type des types génériques englobants ont été assignés à un autre type paramètres, le tableau contient à la fois des types et des paramètres de type.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. Utilisez la IsGenericParameter propriété pour les distinguer.Use the IsGenericParameter property to tell them apart. Pour une démonstration de ce scénario, consultez l’exemple de code pour ContainsGenericParameters la propriété.For a demonstration of this scenario, see the code example for the ContainsGenericParameters property.

Pour obtenir la liste des conditions invariantes pour les termes spécifiques aux méthodes génériques, IsGenericMethod consultez la propriété.For a list of the invariant conditions for terms specific to generic methods, see the IsGenericMethod property. Pour obtenir la liste des conditions invariantes pour les autres termes utilisés dans la réflexion générique Type.IsGenericType , consultez la propriété.For a list of the invariant conditions for other terms used in generic reflection, see the Type.IsGenericType property.

S’applique à

Voir aussi