Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

Type.GetGenericTypeDefinition méthode ()

 

Date de publication : novembre 2016

Retourne un objet Type qui représente une définition de type générique à partir de laquelle le type générique actuel peut être construit.

Espace de noms:   System
Assembly:  mscorlib (dans mscorlib.dll)

Public Overridable Function GetGenericTypeDefinition As Type

Valeur de retour

Type: System.Type

Objet Type représentant un type générique à partir duquel le type actuel peut être construit.

Exception Condition
InvalidOperationException

Le type actuel n’est pas un type générique. Autrement dit, IsGenericType retourne false.

NotSupportedException

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.

Une définition de type générique est un modèle à partir de laquelle d’autres types peuvent être construits. Par exemple, à partir de la définition de type générique G<T> (exprimé en syntaxe c# ; G(Of T) en Visual Basic ou generic <typename T> ref class G en C++) vous pouvez construire et instancier le type G<int> (G(Of Integer) en Visual Basic). Étant donné un Type objet représentant ce type construit, le GetGenericTypeDefinition méthode retourne la définition de type générique.

Si deux types construits sont créés à partir de la même définition de type générique, à l’aide des mêmes arguments de type, le GetGenericTypeDefinition méthode retourne la même Type objet pour les deux types.

Si vous appelez le GetGenericTypeDefinition méthode sur un Type objet qui représente déjà une définition de type générique, elle renvoie l’actuel Type.

System_CAPS_importantImportant

Un tableau de types génériques n’est pas lui-même générique. Dans le code c# A<int>[] v; ou le code Visual Basic Dim v() As A(Of Integer), le type de variable v n’est pas générique. Utilisez IsGenericType pour déterminer si un type est générique avant d’appeler GetGenericTypeDefinition.

Pour obtenir la liste des conditions invariantes pour les termes utilisés dans la réflexion générique, consultez la IsGenericType la section Notes de la propriété.

L’exemple de code suivant crée une instance d’un type construit à l’aide de la création d’instance ordinaire, puis utilise le GetType et GetGenericTypeDefinition méthodes pour récupérer le type construit et la définition de type générique. Cet exemple utilise le type générique Dictionary(Of TKey, TValue) type ; le type construit représente un Dictionary(Of TKey, TValue) de Test objets avec des clés de chaîne.

Imports System
Imports System.Reflection
Imports System.Collections.Generic
Imports Microsoft.VisualBasic


Public Class Test
    Public Shared Sub Main() 
        Console.WriteLine(vbCrLf & "--- Get the generic type that defines a constructed type.")

        ' Create a Dictionary of Test objects, using strings for the
        ' keys.
        Dim d As New Dictionary(Of String, Test)

        ' Get a Type object representing the constructed type.
        '
        Dim constructed As Type = d.GetType()
        DisplayTypeInfo(constructed)

        Dim generic As Type = constructed.GetGenericTypeDefinition()
        DisplayTypeInfo(generic)
    End Sub 'Main

    Private Shared Sub DisplayTypeInfo(ByVal t As Type) 
        Console.WriteLine(vbCrLf & t.ToString())
        Console.WriteLine(vbTab & "Is this a generic type definition? " _
            & t.IsGenericTypeDefinition)
        Console.WriteLine(vbTab & "Is it a generic type? " _
            & t.IsGenericType)
        Dim typeArguments As Type() = t.GetGenericArguments()
        Console.WriteLine(vbTab & "List type arguments (" _
            & typeArguments.Length & "):")
        For Each tParam As Type In typeArguments
            Console.WriteLine(vbTab & vbTab & tParam.ToString())
        Next tParam
    End Sub 'DisplayTypeInfo
End Class 'Test

' This example produces the following output:
'
'--- Get the generic type that defines a constructed type.
'
'System.Collections.Generic.Dictionary`2[System.String,Test]
'        Is this a generic type definition? False
'        Is it a generic type? True
'        List type arguments (2):
'                System.String
'                Test
'
'System.Collections.Generic.Dictionary`2[TKey,TValue]
'        Is this a generic type definition? True
'        Is it a generic type? True
'        List type arguments (2):
'                TKey
'                TValue
' 

Plateforme Windows universelle
Disponible depuis 8
.NET Framework
Disponible depuis 2.0
Bibliothèque de classes portable
Pris en charge dans : plateformes .NET portables
Silverlight
Disponible depuis 2.0
Silverlight pour Windows Phone
Disponible depuis 7.0
Windows Phone
Disponible depuis 8.1
Retour au début
Afficher: