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.

public:
 override cli::array <Type ^> ^ GetGenericArguments();
public override Type[] GetGenericArguments ();
[System.Runtime.InteropServices.ComVisible(true)]
public override Type[] GetGenericArguments ();
override this.GetGenericArguments : unit -> Type[]
[<System.Runtime.InteropServices.ComVisible(true)>]
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. Retourne un tableau vide si la méthode actuelle n'est pas une méthode générique.

Attributs

Exceptions

Cette méthode n'est pas prise en charge.

Exemples

L’exemple de code suivant montre comment obtenir les arguments de type d’une méthode générique et les afficher.

Cet exemple fait partie d’un exemple plus grand fourni pour la MakeGenericMethod méthode .

// 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.

  • Si la méthode actuelle est une méthode construite fermée (autrement dit, la ContainsGenericParameters propriété retourne false), le tableau retourné par la GetGenericArguments méthode contient les types qui ont été affectés aux paramètres de type générique de la définition de méthode générique.

  • Si la méthode actuelle est une définition de méthode générique, le tableau contient les paramètres de type.

  • 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é attribués à certains paramètres de type et des paramètres de type des types génériques englobants ont été affectés à d’autres paramètres de type, le tableau contient à la fois des types et des paramètres de type. Utilisez la IsGenericParameter propriété pour les distinguer. Pour une démonstration de ce scénario, consultez l’exemple de code de la ContainsGenericParameters propriété .

Pour obtenir la liste des conditions invariantes pour les termes spécifiques aux méthodes génériques, consultez la IsGenericMethod propriété . Pour obtenir la liste des conditions invariantes pour les autres termes utilisés dans la réflexion générique, consultez la Type.IsGenericType propriété .

S’applique à

Voir aussi