Type.GetGenericArguments Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Retourne un tableau d’objets Type qui représentent les arguments de type d’un type générique fermé ou les paramètres de type d’une définition de type générique.
public:
virtual cli::array <Type ^> ^ GetGenericArguments();
public virtual Type[] GetGenericArguments();
abstract member GetGenericArguments : unit -> Type[]
override this.GetGenericArguments : unit -> Type[]
Public Overridable Function GetGenericArguments () As Type()
Retours
Tableau d’objets Type qui représentent les arguments de type d’un type générique. Retourne un tableau vide si le type actuel n’est pas un type générique.
Exceptions
La méthode appelée n’est pas prise en charge dans la classe de base. Les classes dérivées doivent fournir une implémentation.
Exemples
L’exemple de code suivant utilise la GetGenericArguments méthode pour afficher les arguments de type d’un type construit et les paramètres de type de sa définition de type générique.
Cet exemple de code fait partie d’un exemple plus grand fourni pour la IsGenericTypeDefinition propriété. Consultez l’exemple plus grand pour obtenir un exemple de sortie.
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);
}
}
}
if t.IsGenericType then
// If this is a generic type, display the type arguments.
let typeArguments = t.GetGenericArguments()
printfn $"\tList type arguments ({typeArguments.Length}):"
for tParam in typeArguments do
// If this is a type parameter, display its
// position.
if tParam.IsGenericParameter then
printfn $"\t\t{tParam}\t(unassigned - parameter position {tParam.GenericParameterPosition})"
else
printfn $"\t\t{tParam}"
If t.IsGenericType Then
' If this is a generic type, display the type arguments.
'
Dim typeArguments As Type() = t.GetGenericArguments()
Console.WriteLine(vbTab & "List type arguments (" _
& typeArguments.Length & "):")
For Each tParam As Type In typeArguments
' If this is a type parameter, display its position.
'
If tParam.IsGenericParameter Then
Console.WriteLine(vbTab & vbTab & tParam.ToString() _
& vbTab & "(unassigned - parameter position " _
& tParam.GenericParameterPosition & ")")
Else
Console.WriteLine(vbTab & vbTab & tParam.ToString())
End If
Next tParam
End If
Remarques
Les éléments de tableau sont retournés dans l’ordre dans lequel ils apparaissent dans la liste des arguments de type pour le type générique.
Si le type actuel est un type construit fermé (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 type générique.Si le type actuel est une définition de type générique, le tableau contient les paramètres de type.
Si le type actuel est un type construit ouvert (autrement dit, la ContainsGenericParameters propriété retourne
true) dans lequel des types spécifiques n’ont pas été affectés à tous les paramètres de type et paramètres de type de type englobant des types génériques ou des méthodes, le tableau contient les deux types et paramètres de type. Utilisez la IsGenericParameter propriété pour les séparer. 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 utilisés dans la réflexion générique, consultez les remarques sur les IsGenericType propriétés.