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.GetType méthode (String, Boolean, Boolean)

 

Date de publication : novembre 2016

Obtient le Type portant le nom spécifié, indiquant s'il faut lever une exception si le type est introuvable et s'il faut effectuer une recherche respectant la casse.

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

public static Type GetType(
	string typeName,
	bool throwOnError,
	bool ignoreCase
)

Paramètres

typeName
Type: System.String

Nom qualifié d'assembly du type à obtenir. Consultez AssemblyQualifiedName. Si le type se trouve dans Mscorlib.dll ou l'assembly en cours d'exécution, il suffit de fournir le nom du type qualifié par son espace de noms.

throwOnError
Type: System.Boolean

true pour lever une exception si le type est introuvable ; false pour retourner null. La spécification de false supprime également d'autres conditions d'exception, mais pas toutes. Consultez la section Exceptions.

ignoreCase
Type: System.Boolean

true pour effectuer une recherche qui ne respecte pas la casse de typeName et false pour effectuer une recherche qui respecte la casse de typeName.

Valeur de retour

Type: System.Type

Type portant le nom spécifié. Si le type est introuvable, le paramètre throwOnError spécifie si null est retourné ou bien une exception est levée. Dans certains cas, une exception est levée indépendamment de la valeur de throwOnError. Consultez la section Exceptions.

Exception Condition
ArgumentNullException

typeName a la valeur null.

TargetInvocationException

Un initialiseur de classe est appelé et lève une exception.

TypeLoadException

throwOnError a la valeur true et le type est introuvable.

ou

throwOnError a la valeur true et typeName contient des caractères non valides, tels qu’une tabulation incorporée.

ou

throwOnError a la valeur true et typeName est une chaîne vide.

ou

throwOnError a la valeur true et typeName représente un type de tableau avec une taille non valide.

ou

typeName représente un tableau de TypedReference.

ArgumentException

throwOnError a la valeur true et typeName contient une syntaxe non valide. Par exemple, « MyType [, *,] ».

ou

typeName représente un type générique qui a un type pointeur, un type ByRef ou Void comme l’un de ses arguments de type.

ou

typeName représente un type générique qui a un nombre incorrect d’arguments de type.

ou

typeName représente un type générique, et un de ses arguments de type ne satisfait pas aux contraintes pour le paramètre de type correspondant.

FileNotFoundException

throwOnError a la valeur true, et l’assembly ou l’une de ses dépendances est introuvable.

FileLoadException

L’assembly ou une de ses dépendances a été trouvé, mais n’a pas pu être chargé.

BadImageFormatException

L’assembly ou une de ses dépendances n’est pas valide.

ou

La version 2.0 ou ultérieure du Common Language Runtime est actuellement chargée, et l’assembly a été compilé avec une version ultérieure.

Vous pouvez utiliser la GetType méthode pour obtenir un Type de l’objet d’un type dans un autre assembly, si vous connaissez son nom qualifié d’espace de noms. GetTypeprovoque le chargement de l’assembly spécifié dans typeName. Vous pouvez également charger un assembly à l’aide de la Load(méthode), puis utiliser le GetType ou GetTypes méthodes de la Assembly classe pour laquelle obtenir Type objets. Si un type est dans un assembly connu de votre programme au moment de la compilation, il est plus efficace d’utiliser typeof en c#, GetType en Visual Basic, ou typeid en C++.

GetTypefonctionne uniquement sur les assemblys chargés à partir du disque. Si vous appelez GetType pour rechercher un type défini dans un assembly dynamique défini à l’aide de la System.Reflection.Emit services, vous pouvez obtenir un comportement incohérent. Le comportement varie selon que l’assembly dynamique est persistant, autrement dit, créé à l’aide de la RunAndSave ou Save accéder aux modes de le System.Reflection.Emit.AssemblyBuilderAccess énumération. Si l’assembly dynamique est persistant et qu’il a été écrit sur le disque avant GetType est appelé, le chargeur recherche l’assembly enregistré sur le disque, charge l’assembly et récupère le type de cet assembly. Si l’assembly n’a pas été enregistré sur le disque lorsque GetType est appelée, la méthode retourne null. GetTypene comprend pas les assemblys dynamiques transitoires ; Par conséquent, l’appel GetType pour récupérer un type dans un temporaire assembly dynamique retourne null.

Pour utiliser GetType sur un module dynamique, vous abonner à la AppDomain.AssemblyResolve événements et les appels GetType avant l’enregistrement. Sinon, vous obtiendrez deux copies de l’assembly dans la mémoire.

Le throwOnError paramètre spécifie que se passe-t-il lorsque le type est introuvable et supprime également certaines autres conditions d’exception, comme décrit dans la section Exceptions. Certaines exceptions sont levées, quelle que soit la valeur de throwOnError. Par exemple, si le type est trouvé mais ne peut pas être chargé, un TypeLoadException est levée même si throwOnError est false.

Le tableau suivant présente les membres d’une classe de base sont retournés par la Get méthodes lors de la réflexion sur un type.

Type de membre

Statique

Non statique

Constructeur

Non

Non

Champ

Non

Oui. Un champ est toujours masquer-par-nom-et-signature.

Événement

Non applicable

La règle de système de type commun est que l’héritage est identique à celle des méthodes qui implémentent la propriété. Réflexion traite les propriétés comme masquer-par-nom-et-signature. Voir la Remarque 2 ci-dessous.

Méthode

Non

Oui. Une méthode (virtuelle et non virtuelle) peut être masquer par nom ou masquer-par-nom-et-signature.

Type imbriqué

Non

Non

Propriété

Non applicable

La règle de système de type commun est que l’héritage est identique à celle des méthodes qui implémentent la propriété. Réflexion traite les propriétés comme masquer-par-nom-et-signature. Voir la Remarque 2 ci-dessous.

  1. Masquer-par-nom-et-signature prend en compte toutes les parties de la signature, y compris les modificateurs personnalisés, des conventions d’appel non managées, les types de paramètres, les sentinelles et les types de retour. Il s’agit d’une comparaison binaire.

  2. Pour la réflexion, les propriétés et événements sont masquer-par-nom-et-signature. Si vous avez une propriété avec une commande get et un accesseur set de la classe de base, mais la classe dérivée possède uniquement un accesseur get, la propriété de la classe dérivée masque la propriété de classe de base, et vous ne pourrez pas accéder à l’accesseur Set sur la classe de base.

  3. Attributs personnalisés ne font pas partie du système de type commun.

Les tableaux ou types COM ne sont pas recherchés, sauf si elles ont déjà été chargés dans la table des classes disponibles.

typeNamele nom de type qualifié par son espace de noms ou un nom qualifié d’assembly qui inclut une spécification de nom d’assembly. Consultez AssemblyQualifiedName.

Si typeName inclut l’espace de noms mais pas le nom de l’assembly, cette méthode recherche uniquement les assembly de l’objet appelant et dans Mscorlib.dll, dans cet ordre. Si typeName est qualifié avec le nom d’assembly partiel ou complet, cette méthode recherche dans l’assembly spécifié. Si l’assembly a un nom fort, un nom d’assembly complet est requis.

Le AssemblyQualifiedName propriété retourne un nom de type qualifié complet, y compris les types imbriqués, le nom de l’assembly et les arguments de type. Tous les compilateurs qui prennent en charge le common language runtime émettront le nom simple d’une classe imbriquée et la réflexion construit un nom tronqué interrogé, conformément aux conventions suivantes.

System_CAPS_noteRemarque

Dans le .NET Framework version 2.0, architecture de processeur est ajoutée à l’identité de l’assembly et peut être spécifié en tant que partie de chaînes de nom d’assembly. Par exemple, « ProcessorArchitecture = msil ». Toutefois, il n’est pas inclus dans la chaîne retournée par la AssemblyQualifiedName propriété, pour des raisons de compatibilité. Vous pouvez également charger des types en créant un AssemblyName objet et en le passant à la surcharge appropriée de la Load (méthode). Vous pouvez ensuite utiliser le Assembly.GetType méthode pour charger les types à partir de l’assembly. Voir aussi AssemblyName.ProcessorArchitecture.

Délimiteur

Signification

Barre oblique inverse (\)

Caractère d’échappement.

Accent grave (')

Précède un ou plusieurs chiffres représentant le nombre de paramètres de type, à la fin du nom d’un type générique.

Crochets ([])

Placez une liste d’arguments de type générique, pour un type générique construit ; dans une liste d’arguments de type, placez un type qualifié d’assembly.

Virgule ()

Précède le nom de l’Assembly.

Point (.)

Indique les identificateurs d’espace de noms.

Signe plus (+)

Précède une classe imbriquée.

Par exemple, le nom qualifié complet d’une classe peut ressembler à ceci :

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly

Si l’espace de noms ont été TopNamespace, la chaîne devrait faire précéder le signe plus (+) avec un caractère d’échappement (\) pour l’empêcher d’être interprété comme un séparateur d’imbrication. La réflexion génère cette chaîne comme suit :

TopNamespace.Sub\+Namespace.ContainingClass+NestedClass,MyAssembly

Un « ++ » devient « \ + \ + » et un « \ » devient « \ ».

Ce nom qualifié peut être persistant et utilisé ultérieurement pour charger le Type. Pour rechercher et charger un Type, utilisez GetType avec le type de nom uniquement ou avec le nom de type qualifié d’assembly. GetTypeavec le type de nom uniquement recherchera le Type dans l’assembly de l’appelant, puis dans l’assembly système. GetTypeavec l’assembly de nom de type qualifié recherchera le Type dans n’importe quel assembly.

Noms de types peuvent inclure des caractères de fin qui indiquent des informations supplémentaires sur le type, par exemple si le type est un type référence, un type pointeur ou un type tableau. Pour récupérer le nom de type sans ces caractères de fin, utilisez t.GetElementType().ToString(), où t est le type.

Les espaces ne sont pertinentes dans tous les composants de nom de type, à l’exception du nom de l’assembly. Nom de l’assembly, les espaces avant le séparateur ',', mais des espaces après le séparateur ',' sont ignorées.

Le nom d’un type générique se termine par un accent grave (') suivi de chiffres représentant le nombre d’arguments de type générique. L’objectif de cette altération des noms est de permettre aux compilateurs prendre en charge des types génériques portant le même nom mais avec différents nombres de paramètres de type, qui se produisent dans la même portée. Par exemple, la réflexion retourne les noms tronqués Tuple`1 et Tuple`2 à partir des méthodes génériques Tuple(Of T) et Tuple(Of T0, T1) en Visual Basic, ou Tuple<T> et Tuple<T0, T1> en Visual c#.

Pour les types génériques, la liste d’arguments de type est placé entre crochets et les arguments de type sont séparés par des virgules. Par exemple, un type générique Dictionary<TKey, TValue> possède deux paramètres de type. A Dictionary<TKey, TValue> de MyType avec des clés de type String peut être représenté comme suit :

System.Collections.Generic.Dictionary`2[System.String,MyType]

Pour spécifier un type qualifié d’assembly dans une liste d’arguments de type, mettez le type qualifié d’assembly entre crochets. Sinon, les virgules qui séparent les parties du nom qualifié d’assembly sont interprétées comme délimitant les arguments de type supplémentaires. Par exemple, un Dictionary<TKey, TValue> de MyType issu de MyAssembly.dll, avec des clés de type String, peut être spécifiée comme suit :

Type.GetType("System.Collections.Generic.Dictionary`2[System.String,[MyType,MyAssembly]]")
System_CAPS_noteRemarque

Un type qualifié d’assembly peut être placé entre crochets uniquement lorsqu’il apparaît dans une liste de paramètres de type. Les règles pour la recherche d’assemblys de types qualifiés et non qualifiés dans les listes de paramètres de type sont le même que les règles pour les types non génériques qualifiés et non qualifiés.

Les types Nullable sont un cas spécial de types génériques. Par exemple, autorisant des valeurs null Int32 est représenté par la chaîne « System.Nullable'1[System.Int32] ».

System_CAPS_noteRemarque

En c#, C++ et Visual Basic, vous pouvez également obtenir des types nullables à l’aide d’opérateurs de type. Par exemple, le nullable Boolean type renvoyé par typeof(Nullable<bool>) en c#, par Nullable<Boolean>::typeid en C++ et par GetType(Nullable(Of Boolean)) en Visual Basic.

Le tableau suivant montre la syntaxe à utiliser avec GetType pour différents types.

Pour obtenir

Utilisez

Un nullableInt32

Type.GetType("System.Nullable`1[System.Int32]")

Un pointeur non managé versMyType

Type.GetType("MyType*")

Un pointeur non managé vers un pointeur versMyType

Type.GetType("MyType**")

Un pointeur managé ou la référence àMyType

Type.GetType("MyType&"). Notez que, contrairement aux pointeurs, références sont limitées à un niveau.

Une classe parente et une classe imbriquée

Type.GetType("MyParentClass+MyNestedClass")

Un tableau unidimensionnel avec une limite inférieure de 0

Type.GetType("MyArray[]")

Un tableau unidimensionnel avec une limite inférieure est inconnue

Type.GetType("MyArray[*]")

Un tableau à n dimensions

Une virgule (,) entre les crochets total de n-1 fois. Par exemple, System.Object[,,] représente un graphique en trois dimensions Object tableau.

Tableau d’un tableau à deux dimensions

Type.GetType("MyArray[][]")

Un tableau rectangulaire à deux dimensions avec des limites inférieures inconnus

Type.GetType("MyArray[,]")

Un type générique avec un argument de type

Type.GetType("MyGenericType`1[MyType]")

Un type générique avec deux arguments de type

Type.GetType("MyGenericType`2[MyType,AnotherType]")

Un type générique avec deux arguments de type qualifié d’assembly

Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")

Un type générique qualifié d’assembly avec un argument de type qualifié d’assembly

Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")

Un type générique dont l’argument de type est un type générique avec deux arguments de type

Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")

Plateforme Windows universelle
Disponible depuis 10
.NET Framework
Disponible depuis 1.1
Silverlight
Disponible depuis 2.0
Silverlight pour Windows Phone
Disponible depuis 7.0
Retour au début
Afficher: