Type.GetType Méthode

Définition

Obtient un objet Type qui représente le type spécifié.Gets a Type object that represents the specified type.

Surcharges

GetType()

Obtient le Type actuel.Gets the current Type.

GetType(String)

Obtient le Type avec le nom spécifié, effectuant une recherche qui respecte la casse.Gets the Type with the specified name, performing a case-sensitive search.

GetType(String, Boolean)

Obtient le Type portant le nom spécifié, en effectuant une recherche respectant la casse et en spécifiant s'il faut lever une exception si le type est introuvable.Gets the Type with the specified name, performing a case-sensitive search and specifying whether to throw an exception if the type is not found.

GetType(String, Boolean, Boolean)

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.Gets the Type with the specified name, specifying whether to throw an exception if the type is not found and whether to perform a case-sensitive search.

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>)

Obtient le type avec le nom spécifié et éventuellement des méthodes personnalisées permettant de résoudre l'assembly et le type.Gets the type with the specified name, optionally providing custom methods to resolve the assembly and the type.

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean)

Obtient le type portant le nom spécifié, en indiquant s'il faut lever une exception si le type est introuvable et, éventuellement, en fournissant des méthodes personnalisées qui permettent de résoudre l'assembly et le type.Gets the type with the specified name, specifying whether to throw an exception if the type is not found, and optionally providing custom methods to resolve the assembly and the type.

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean)

Obtient le type portant le nom spécifié, en indiquant s'il faut effectuer une recherche qui respecte la casse et si une exception doit être levée si le type est introuvable, et éventuellement, en fournissant des méthodes personnalisées qui permettent de résoudre l'assembly et le type.Gets the type with the specified name, specifying whether to perform a case-sensitive search and whether to throw an exception if the type is not found, and optionally providing custom methods to resolve the assembly and the type.

GetType()

Obtient le Type actuel.Gets the current Type.

public:
 virtual Type ^ GetType();
public Type GetType ();
override this.GetType : unit -> Type
Public Function GetType () As Type

Retours

Type actuel.The current Type.

Implémente

Exceptions

Un initialiseur de classe est appelé et lève une exception.A class initializer is invoked and throws an exception.

Voir aussi

GetType(String)

Obtient le Type avec le nom spécifié, effectuant une recherche qui respecte la casse.Gets the Type with the specified name, performing a case-sensitive search.

public:
 static Type ^ GetType(System::String ^ typeName);
public static Type GetType (string typeName);
static member GetType : string -> Type
Public Shared Function GetType (typeName As String) As Type

Paramètres

typeName
String

Nom qualifié d'assembly du type à obtenir.The assembly-qualified name of the type to get. Consultez AssemblyQualifiedName.See 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.If the type is in the currently executing assembly or in Mscorlib.dll, it is sufficient to supply the type name qualified by its namespace.

Retours

Type présentant le nom spécifié, s'il est trouvé ; sinon, null.The type with the specified name, if found; otherwise, null.

Exceptions

typeName a la valeur null.typeName is null.

Un initialiseur de classe est appelé et lève une exception.A class initializer is invoked and throws an exception.

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.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

-ou--or- typeName représente un type générique qui a un nombre incorrect d’arguments de type.typeName represents a generic type that has an incorrect number of type arguments.

-ou--or- 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.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

typeName représente un tableau de TypedReference.typeName represents an array of TypedReference.

Dans .NET pour les applications du Windows Store ou la Bibliothèque de classes portable, interceptez l’exception de la classe de base, IOException, à la place.In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, IOException, instead.

L’assembly ou une de ses dépendances a été trouvé, mais n’a pas pu être chargé.The assembly or one of its dependencies was found, but could not be loaded.

L’assembly ou une de ses dépendances n’est pas valide.The assembly or one of its dependencies is not valid.

-ou--or-

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.Version 2.0 or later of the common language runtime is currently loaded, and the assembly was compiled with a later version.

Exemples

L’exemple suivant récupère le type de System.Int32 et utilise cet objet de type pour afficher la propriété FullName de System.Int32.The following example retrieves the type of System.Int32 and uses that type object to display the FullName property of System.Int32.

using namespace System;

int main()
{
   try {
      // Get the type of a specified class.
      Type^ myType1 = Type::GetType( "System.Int32" );
      Console::WriteLine( "The full name is {0}.\n", myType1->FullName );
   }
   catch ( TypeLoadException^ e ) {
       Console::WriteLine("{0}: Unable to load type System.Int32",
                          e->GetType()->Name);
   }

   try {
      // Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
      Type^ myType2 = Type::GetType( "NoneSuch", true );
      Console::WriteLine( "The full name is {0}.", myType2->FullName );
   }
   catch ( TypeLoadException^ e ) {
       Console::WriteLine("{0}: Unable to load type NoneSuch",
                          e->GetType()->Name);
   }

}
// The example displays the following output:
//       The full name is System.Int32.
//
//       TypeLoadException: Unable to load type NoneSuch
using System;

class Example
{
     public static void Main()
     {
         try {
             // Get the type of a specified class.
             Type myType1 = Type.GetType("System.Int32");
             Console.WriteLine("The full name is {0}.\n", myType1.FullName);
         }
         catch (TypeLoadException e)
         {
            Console.WriteLine("{0}: Unable to load type System.Int32", e.GetType().Name);
         }

         try {
             // Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
             Type myType2 = Type.GetType("NoneSuch", true);
             Console.WriteLine("The full name is {0}.", myType2.FullName);
         }
         catch(TypeLoadException e) {
            Console.WriteLine("{0}: Unable to load type NoneSuch", e.GetType().Name);
         }
     }
}
// The example displays the following output:
//       The full name is System.Int32.
//
//       TypeLoadException: Unable to load type NoneSuch
Class Example
     Public Shared Sub Main()
         Try
             ' Get the type of the specified class.
             Dim myType1 As Type = Type.GetType("System.Int32")
             Console.WriteLine("The full name is {0}.", myType1.FullName)
         Catch e As TypeLoadException
             Console.WriteLine("{0}: Unable to load type System.Int32",
                               e.GetType().Name)
         End Try

         Console.WriteLine()

         Try
             ' Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
             Dim myType2 As Type = Type.GetType("NoneSuch", True)
             Console.WriteLine("The full name is {0}.", myType2.FullName)
         Catch e As TypeLoadException
             Console.WriteLine("{0}: Unable to load type NoneSuch", e.GetType().Name)
         End Try
     End Sub
End Class
' The example displays the following output:
'       The full name is System.Int32.
'
'       TypeLoadException: Unable to load type NoneSuch

Remarques

Vous pouvez utiliser la méthode GetType pour obtenir un objet Type pour un type dans un autre assembly, si vous connaissez son nom qualifié d’assembly, qui peut être obtenu à partir de AssemblyQualifiedName.You can use the GetType method to obtain a Type object for a type in another assembly if you know its assembly-qualified name, which can be obtained from AssemblyQualifiedName. GetType provoque le chargement de l’assembly spécifié dans typeName.GetType causes loading of the assembly specified in typeName. Vous pouvez également charger un assembly à l’aide de la méthode Assembly.Load, puis utiliser la méthode Assembly.GetType ou Assembly.GetTypes pour récupérer des objets Type.You can also load an assembly using the Assembly.Load method, and then use the Assembly.GetType or Assembly.GetTypes method to get Type objects. Si un type se trouve dans un assembly connu de votre programme au moment de la compilation, il est plus efficace C# d’utiliser typeof dans ou l’opérateur GetType dans Visual Basic.If a type is in an assembly known to your program at compile time, it is more efficient to use typeof in C# or the GetType operator in Visual Basic.

Notes

Si typeName est introuvable, l’appel à la méthode GetType(String) retourne null.If typeName cannot be found, the call to the GetType(String) method returns null. Elle ne lève pas d’exception.It does not throw an exception. Pour contrôler si une exception est levée, appelez une surcharge de la méthode GetType qui a un paramètre throwOnError.To control whether an exception is thrown, call an overload of the GetType method that has a throwOnError parameter.

GetType fonctionne uniquement sur les assemblys chargés à partir du disque.GetType only works on assemblies loaded from disk. Si vous appelez GetType pour rechercher un type défini dans un assembly dynamique défini à l’aide des services System.Reflection.Emit, vous pouvez obtenir un comportement incohérent.If you call GetType to look up a type defined in a dynamic assembly defined using the System.Reflection.Emit services, you might get inconsistent behavior. Le comportement varie selon que l’assembly dynamique est persistant, c’est-à-dire créé à l’aide des modes d’accès RunAndSave ou Save de l’énumération System.Reflection.Emit.AssemblyBuilderAccess.The behavior depends on whether the dynamic assembly is persistent, that is, created using the RunAndSave or Save access modes of the System.Reflection.Emit.AssemblyBuilderAccess enumeration. Si l’assembly dynamique est persistant et a été écrit sur le disque avant l’appel de GetType, le chargeur recherche l’assembly enregistré sur le disque, charge cet assembly et récupère le type de cet assembly.If the dynamic assembly is persistent and has been written to disk before GetType is called, the loader finds the saved assembly on disk, loads that assembly, and retrieves the type from that assembly. Si l’assembly n’a pas été enregistré sur le disque lors de l’appel de GetType, la méthode retourne null.If the assembly has not been saved to disk when GetType is called, the method returns null. GetType ne comprend pas les assemblys dynamiques transitoires ; par conséquent, l’appel de GetType pour récupérer un type dans un assembly dynamique transitoire retourne null.GetType does not understand transient dynamic assemblies; therefore, calling GetType to retrieve a type in a transient dynamic assembly returns null.

Pour utiliser GetType sur un module dynamique, abonnez-vous à l’événement AppDomain.AssemblyResolve et appelez GetType avant d’enregistrer.To use GetType on a dynamic module, subscribe to the AppDomain.AssemblyResolve event and call GetType before saving. Dans le cas contraire, vous obtiendrez deux copies de l’assembly en mémoire.Otherwise, you will get two copies of the assembly in memory.

Le tableau suivant répertorie les membres d’une classe de base qui sont retournés par les méthodes Get lors de la réflexion sur un type.The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

le type de membre.Member Type StaticStatic Non statiqueNon-Static
ConstructeurConstructor NonNo NonNo
ChampField NonNo Oui.Yes. Un champ est toujours masqué par nom-et-signature.A field is always hide-by-name-and-signature.
ÉvénementEvent Non applicableNot applicable La règle de système de type commun est que l’héritage est le même que celui des méthodes qui implémentent la propriété.The common type system rule is that the inheritance is the same as that of the methods that implement the property. La réflexion traite les propriétés comme étant masquées-par-nom-et-signature.Reflection treats properties as hide-by-name-and-signature. Voir la remarque 2 ci-dessous.See note 2 below.
MéthodeMethod NonNo Oui.Yes. Une méthode (à la fois virtuelles et non virtuelles) peut être masquée ou masquée-par-nom-et-signature.A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
Type imbriquéNested Type NonNo NonNo
PropriétéProperty Non applicableNot applicable La règle de système de type commun est que l’héritage est le même que celui des méthodes qui implémentent la propriété.The common type system rule is that the inheritance is the same as that of the methods that implement the property. La réflexion traite les propriétés comme étant masquées-par-nom-et-signature.Reflection treats properties as hide-by-name-and-signature. Voir la remarque 2 ci-dessous.See note 2 below.
  1. Hide-by-Name-and-signature prend en compte toutes les parties de la signature, y compris les modificateurs personnalisés, les types de retour, les types de paramètres, les sentinelles et les conventions d’appel non managées.Hide-by-name-and-signature considers all of the parts of the signature, including custom modifiers, return types, parameter types, sentinels, and unmanaged calling conventions. Il s’agit d’une comparaison binaire.This is a binary comparison.

  2. Pour la réflexion, les propriétés et les événements sont masqués par nom et signature.For reflection, properties and events are hide-by-name-and-signature. Si vous avez une propriété avec un accesseur get et un accesseur set dans la classe de base, mais que la classe dérivée a uniquement un accesseur Get, la propriété de la classe dérivée masque la propriété de la classe de base, et vous ne pouvez pas accéder à la méthode setter sur la classe de base.If you have a property with both a get and a set accessor in the base class, but the derived class has only a get accessor, the derived class property hides the base class property, and you will not be able to access the setter on the base class.

  3. Les attributs personnalisés ne font pas partie du système de type commun.Custom attributes are not part of the common type system.

Les tableaux ou les types COM ne sont pas recherchés, sauf s’ils ont déjà été chargés dans la table des classes disponibles.Arrays or COM types are not searched for unless they have already been loaded into the table of available classes.

typeName peut être le nom de type qualifié par son espace de noms ou un nom qualifié d’assembly qui comprend une spécification de nom d’assembly.typeName can be the type name qualified by its namespace or an assembly-qualified name that includes an assembly name specification. Consultez AssemblyQualifiedName.See AssemblyQualifiedName.

Si typeName comprend l’espace de noms, mais pas le nom de l’assembly, cette méthode recherche uniquement l’assembly de l’objet appelant et le fichier mscorlib. dll, dans cet ordre.If typeName includes the namespace but not the assembly name, this method searches only the calling object's assembly and Mscorlib.dll, in that order. Si typeName est qualifié complet avec le nom d’assembly partiel ou complet, cette méthode recherche dans l’assembly spécifié.If typeName is fully qualified with the partial or complete assembly name, this method searches in the specified assembly. Si l’assembly a un nom fort, un nom d’assembly complet est requis.If the assembly has a strong name, a complete assembly name is required.

La propriété AssemblyQualifiedName retourne un nom de type qualifié complet, y compris les types imbriqués, le nom de l’assembly et les arguments de type générique.The AssemblyQualifiedName property returns a fully qualified type name including nested types, the assembly name, and generic type arguments. Tous les compilateurs qui prennent en charge le common language runtime émettent le nom simple d’une classe imbriquée, et la réflexion construit un nom tronqué lorsqu’il est interrogé, conformément aux conventions suivantes.All compilers that support the common language runtime will emit the simple name of a nested class, and reflection constructs a mangled name when queried, in accordance with the following conventions.

Notes

Dans le .NET Framework version 2,0, architecture du processeur est ajouté à l’identité de l’assembly et peut être spécifié dans le cadre des chaînes de nom d’assembly.In the .NET Framework version 2.0, processor architecture is added to assembly identity, and can be specified as part of assembly name strings. Par exemple, « ProcessorArchitecture = MSIL ».For example, "ProcessorArchitecture=msil". Toutefois, il n’est pas inclus dans la chaîne retournée par la propriété AssemblyQualifiedName, pour des raisons de compatibilité.However, it is not included in the string returned by the AssemblyQualifiedName property, for compatibility reasons. Vous pouvez également charger des types en créant un objet AssemblyName et en le passant à une surcharge appropriée de la méthode Load.You can also load types by creating an AssemblyName object and passing it to an appropriate overload of the Load method. Vous pouvez ensuite utiliser la méthode Assembly.GetType pour charger des types à partir de l’assembly.You can then use the Assembly.GetType method to load types from the assembly. Voir aussi AssemblyName.ProcessorArchitecture.See also AssemblyName.ProcessorArchitecture.

DelimiterDelimiter SignificationMeaning
Barre oblique inverse (\)Backslash (\) Caractère d’échappement.Escape character.
Tops (')Backtick (`) Précède un ou plusieurs chiffres représentant le nombre de paramètres de type, situés à la fin du nom d’un type générique.Precedes one or more digits representing the number of type parameters, located at the end of the name of a generic type.
Crochets ([])Brackets ([]) 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.Enclose a generic type argument list, for a constructed generic type; within a type argument list, enclose an assembly-qualified type.
Virgule (,)Comma (,) Précède le nom de l’assembly.Precedes the Assembly name.
Point (.)Period (.) Indique des identificateurs d’espace de noms.Denotes namespace identifiers.
Signe plus (+)Plus sign (+) Précède une classe imbriquée.Precedes a nested class.

Par exemple, le nom qualifié complet d’une classe peut se présenter comme suit :For example, the fully qualified name for a class might look like this:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly  

Si l’espace de noms était à l’espace de noms. sous + espace de noms, la chaîne devra précéder le signe plus (+) d’un caractère d’échappement (\) pour l’empêcher d’être interprété comme un séparateur d’imbrication.If the namespace were TopNamespace.Sub+Namespace, then the string would have to precede the plus sign (+) with an escape character (\) to prevent it from being interpreted as a nesting separator. La réflexion émet cette chaîne comme suit :Reflection emits this string as follows:

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

Un « + + » devient «\+\+ » et un «\» devient «\\».A "++" becomes "\+\+", and a "\" becomes "\\".

Ce nom qualifié peut être persistant et utilisé ultérieurement pour charger le Type.This qualified name can be persisted and later used to load the Type. Pour rechercher et charger un Type, utilisez GetType avec le nom de type uniquement ou avec le nom de type qualifié d’assembly.To search for and load a Type, use GetType either with the type name only or with the assembly qualified type name. GetType avec le nom de type recherche uniquement les Type dans l’assembly de l’appelant, puis dans l’assembly système.GetType with the type name only will look for the Type in the caller's assembly and then in the System assembly. GetType avec le nom de type qualifié d’assembly recherche le Type dans n’importe quel assembly.GetType with the assembly qualified type name will look for the Type in any assembly.

Les noms de types peuvent inclure des caractères de fin qui désignent 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.Type names may include trailing characters that denote additional information about the type, such as whether the type is a reference type, a pointer type or an array type. Pour récupérer le nom du type sans ces caractères de fin, utilisez t.GetElementType().ToString(), où t est le type.To retrieve the type name without these trailing characters, use t.GetElementType().ToString(), where t is the type.

Les espaces sont pertinents dans tous les composants de nom de type, à l’exception du nom de l’assembly.Spaces are relevant in all type name components except the assembly name. Dans le nom de l’assembly, les espaces situés avant le séparateur « , » sont pertinents, mais les espaces après le séparateur « , » sont ignorés.In the assembly name, spaces before the ',' separator are relevant, but spaces after the ',' separator are ignored.

Le nom d’un type générique se termine par un surcycle (`) suivi de chiffres représentant le nombre d’arguments de type générique.The name of a generic type ends with a backtick (`) followed by digits representing the number of generic type arguments. L’objectif de cette gestion de noms est de permettre aux compilateurs de 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.The purpose of this name mangling is to allow compilers to support generic types with the same name but with different numbers of type parameters, occurring in the same scope. Par exemple, la réflexion retourne les noms tronqués Tuple1andTuple2 des méthodes génériques Tuple(Of T) et Tuple(Of T0, T1) dans Visual Basic, ou Tuple<T> et Tuple\<T0, T1> en C#Visual.For example, reflection returns the mangled names Tuple1andTuple2 from the generic methods Tuple(Of T) and Tuple(Of T0, T1) in Visual Basic, or Tuple<T> and Tuple\<T0, T1> in Visual C#.

Pour les types génériques, la liste d’arguments de type est placée entre crochets et les arguments de type sont séparés par des virgules.For generic types, the type argument list is enclosed in brackets, and the type arguments are separated by commas. Par exemple, un Dictionary<TKey,TValue> générique a deux paramètres de type.For example, a generic Dictionary<TKey,TValue> has two type parameters. Une Dictionary<TKey,TValue> de MyType avec des clés de type String peut être représentée comme suit :A Dictionary<TKey,TValue> of MyType with keys of type String might be represented as follows:

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

Pour spécifier un type qualifié d’assembly dans une liste d’arguments de type, placez le type qualifié d’assembly entre crochets.To specify an assembly-qualified type within a type argument list, enclose the assembly-qualified type within brackets. 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.Otherwise, the commas that separate the parts of the assembly-qualified name are interpreted as delimiting additional type arguments. Par exemple, une Dictionary<TKey,TValue> de MyType fromMyAssembly. dll, avec des clés de type String, peut être spécifiée comme suit :For example, a Dictionary<TKey,TValue> of MyType fromMyAssembly.dll, with keys of type String, might be specified as follows:

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

Notes

Un type qualifié d’assembly peut être placé entre crochets uniquement lorsqu’il apparaît dans une liste de paramètres de type.An assembly-qualified type can be enclosed in brackets only when it appears within a type parameter list. Les règles de recherche d’assemblys pour les types qualifiés et non qualifiés dans les listes de paramètres de type sont les mêmes que les règles pour les types non génériques qualifiés et non qualifiés.The rules for searching assemblies for qualified and unqualified types in type parameter lists are the same as the rules for qualified and unqualified nongeneric types.

Les types Nullable sont un cas spécial de types génériques.Nullable types are a special case of generic types. Par exemple, un Int32 Nullable est représenté par la chaîne "System. Nullable' 1 [System. Int32]".For example, a nullable Int32 is represented by the string "System.Nullable`1[System.Int32]".

Notes

Dans C#, C++et Visual Basic vous pouvez également récupérer des types Nullable à l’aide d’opérateurs de type.In C#, C++, and Visual Basic you can also get nullable types using type operators. Par exemple, le type de Boolean Nullable est retourné par typeof(Nullable<bool>) C#dans, par Nullable<Boolean>::typeid C++dans et par GetType(Nullable(Of Boolean)) dans Visual Basic.For example, the nullable Boolean type is returned by typeof(Nullable<bool>) in C#, by Nullable<Boolean>::typeid in C++, and by GetType(Nullable(Of Boolean)) in Visual Basic.

Le tableau suivant montre la syntaxe que vous utilisez avec GetType pour différents types.The following table shows the syntax you use with GetType for various types.

Pour accéderTo Get UtilisezUse
Int32 NullableA nullable Int32 Type.GetType("System.Nullable`1[System.Int32]")
Pointeur non managé vers MyTypeAn unmanaged pointer to MyType Type.GetType("MyType*")
Pointeur non managé vers un pointeur vers MyTypeAn unmanaged pointer to a pointer to MyType Type.GetType("MyType**")
Pointeur managé ou référence à MyTypeA managed pointer or reference to MyType Type.GetType("MyType&").,Type.GetType("MyType&"). Notez que contrairement aux pointeurs, les références sont limitées à un niveau.Note that unlike pointers, references are limited to one level.
Une classe parente et une classe imbriquéeA parent class and a nested class Type.GetType("MyParentClass+MyNestedClass")
Tableau unidimensionnel avec une limite inférieure de 0A one-dimensional array with a lower bound of 0 Type.GetType("MyType[]")
Tableau unidimensionnel avec une limite inférieure inconnueA one-dimensional array with an unknown lower bound Type.GetType("MyType[*]")
Tableau à n dimensionsAn n-dimensional array Virgule (,) à l’intérieur des crochets un total de n-1 fois.A comma (,) inside the brackets a total of n-1 times. Par exemple, System.Object[,,] représente un tableau de Object à trois dimensions.For example, System.Object[,,] represents a three-dimensional Object array.
Tableau de tableaux unidimensionnelsAn array of one-dimensional arrays Type.GetType("MyType[][]")
Tableau rectangulaire à deux dimensions avec limites inférieures inconnuesA rectangular two-dimensional array with unknown lower bounds Type.GetType("MyType[,]")
Type générique avec un argument de typeA generic type with one type argument Type.GetType("MyGenericType`1[MyType]")
Type générique avec deux arguments de typeA generic type with two type arguments Type.GetType("MyGenericType`2[MyType,AnotherType]")
Type générique avec deux arguments de type qualifiés par un assemblyA generic type with two assembly-qualified type arguments Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
Type générique qualifié d’assembly avec un argument de type qualifié d’assemblyAn assembly-qualified generic type with an assembly-qualified type argument Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
Type générique dont l’argument de type est un type générique avec deux arguments de typeA generic type whose type argument is a generic type with two type arguments Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")

Voir aussi

GetType(String, Boolean)

Obtient le Type portant le nom spécifié, en effectuant une recherche respectant la casse et en spécifiant s'il faut lever une exception si le type est introuvable.Gets the Type with the specified name, performing a case-sensitive search and specifying whether to throw an exception if the type is not found.

public:
 static Type ^ GetType(System::String ^ typeName, bool throwOnError);
public static Type GetType (string typeName, bool throwOnError);
static member GetType : string * bool -> Type
Public Shared Function GetType (typeName As String, throwOnError As Boolean) As Type

Paramètres

typeName
String

Nom qualifié d'assembly du type à obtenir.The assembly-qualified name of the type to get. Consultez AssemblyQualifiedName.See 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.If the type is in the currently executing assembly or in Mscorlib.dll, it is sufficient to supply the type name qualified by its namespace.

throwOnError
Boolean

true pour lever une exception si le type est introuvable ; false pour retourner null.true to throw an exception if the type cannot be found; false to return null. false supprime également d'autres conditions d'exception, mais pas toutes.Specifying false also suppresses some other exception conditions, but not all of them. Consultez la section Exceptions.See the Exceptions section.

Retours

Type portant le nom spécifié.The type with the specified name. Si le type est introuvable, le paramètre throwOnError spécifie si null est retourné ou bien une exception est levée.If the type is not found, the throwOnError parameter specifies whether null is returned or an exception is thrown. Dans certains cas, une exception est levée indépendamment de la valeur de throwOnError.In some cases, an exception is thrown regardless of the value of throwOnError. Consultez la section Exceptions.See the Exceptions section.

Exceptions

typeName a la valeur null.typeName is null.

Un initialiseur de classe est appelé et lève une exception.A class initializer is invoked and throws an exception.

throwOnError a la valeur true et le type est introuvable.throwOnError is true and the type is not found.

-ou--or- throwOnError a la valeur true et typeName contient des caractères non valides, tels qu’une tabulation incorporée.throwOnError is true and typeName contains invalid characters, such as an embedded tab. -ou--or- throwOnError a la valeur true et typeName est une chaîne vide.throwOnError is true and typeName is an empty string.

-ou--or- throwOnError a la valeur true et typeName représente un type de tableau avec une taille non valide.throwOnError is true and typeName represents an array type with an invalid size.

-ou--or- typeName représente un tableau de TypedReference.typeName represents an array of TypedReference.

throwOnError a la valeur true et typeName contient une syntaxe non valide.throwOnError is true and typeName contains invalid syntax. Par exemple, « MyType [, *,] ».For example, "MyType[,*,]".

-ou--or- 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.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

-ou--or- typeName représente un type générique qui a un nombre incorrect d’arguments de type.typeName represents a generic type that has an incorrect number of type arguments.

-ou--or- 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.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

throwOnError a la valeur true et l’assembly ou l’une de ses dépendances est introuvable.throwOnError is true and the assembly or one of its dependencies was not found.

Dans .NET pour les applications du Windows Store ou la Bibliothèque de classes portable, interceptez l’exception de la classe de base, IOException, à la place.In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, IOException, instead.

L’assembly ou une de ses dépendances a été trouvé, mais n’a pas pu être chargé.The assembly or one of its dependencies was found, but could not be loaded.

L’assembly ou une de ses dépendances n’est pas valide.The assembly or one of its dependencies is not valid.

-ou--or-

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.Version 2.0 or later of the common language runtime is currently loaded, and the assembly was compiled with a later version.

Exemples

L’exemple suivant récupère le type de System.Int32 et utilise cet objet de type pour afficher la propriété FullName de System.Int32.The following example retrieves the type of System.Int32 and uses that type object to display the FullName property of System.Int32. Si un objet de type fait référence à un assembly qui n’existe pas, cet exemple lève une exception.If a type object refers to an assembly that does not exist, this example throws an exception.

using namespace System;

int main()
{
   try {
      // Get the type of a specified class.
      Type^ myType1 = Type::GetType( "System.Int32" );
      Console::WriteLine( "The full name is {0}.\n", myType1->FullName );
   }
   catch ( TypeLoadException^ e ) {
       Console::WriteLine("{0}: Unable to load type System.Int32",
                          e->GetType()->Name);
   }

   try {
      // Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
      Type^ myType2 = Type::GetType( "NoneSuch", true );
      Console::WriteLine( "The full name is {0}.", myType2->FullName );
   }
   catch ( TypeLoadException^ e ) {
       Console::WriteLine("{0}: Unable to load type NoneSuch",
                          e->GetType()->Name);
   }

}
// The example displays the following output:
//       The full name is System.Int32.
//
//       TypeLoadException: Unable to load type NoneSuch
using System;

class Example
{
     public static void Main()
     {
         try {
             // Get the type of a specified class.
             Type myType1 = Type.GetType("System.Int32");
             Console.WriteLine("The full name is {0}.\n", myType1.FullName);
         }
         catch (TypeLoadException e)
         {
            Console.WriteLine("{0}: Unable to load type System.Int32", e.GetType().Name);
         }

         try {
             // Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
             Type myType2 = Type.GetType("NoneSuch", true);
             Console.WriteLine("The full name is {0}.", myType2.FullName);
         }
         catch(TypeLoadException e) {
            Console.WriteLine("{0}: Unable to load type NoneSuch", e.GetType().Name);
         }
     }
}
// The example displays the following output:
//       The full name is System.Int32.
//
//       TypeLoadException: Unable to load type NoneSuch
Class Example
     Public Shared Sub Main()
         Try
             ' Get the type of the specified class.
             Dim myType1 As Type = Type.GetType("System.Int32")
             Console.WriteLine("The full name is {0}.", myType1.FullName)
         Catch e As TypeLoadException
             Console.WriteLine("{0}: Unable to load type System.Int32",
                               e.GetType().Name)
         End Try

         Console.WriteLine()

         Try
             ' Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
             Dim myType2 As Type = Type.GetType("NoneSuch", True)
             Console.WriteLine("The full name is {0}.", myType2.FullName)
         Catch e As TypeLoadException
             Console.WriteLine("{0}: Unable to load type NoneSuch", e.GetType().Name)
         End Try
     End Sub
End Class
' The example displays the following output:
'       The full name is System.Int32.
'
'       TypeLoadException: Unable to load type NoneSuch

Remarques

Vous pouvez utiliser la méthode GetType pour obtenir un objet Type pour un type dans un autre assembly, si vous connaissez son nom qualifié d’assembly, qui peut être obtenu à partir de AssemblyQualifiedName.You can use the GetType method to obtain a Type object for a type in another assembly if you know its assembly-qualified name, which can be obtained from AssemblyQualifiedName. GetType provoque le chargement de l’assembly spécifié dans typeName.GetType causes loading of the assembly specified in typeName. Vous pouvez également charger un assembly à l’aide de la méthode Assembly.Load, puis utiliser la méthode Assembly.GetType ou Assembly.GetTypes pour récupérer des objets Type.You can also load an assembly using the Assembly.Load method, and then use the Assembly.GetType or Assembly.GetTypes method to get Type objects. Si un type se trouve dans un assembly connu de votre programme au moment de la compilation, il est plus efficace C# d’utiliser typeof dans ou l’opérateur GetType dans Visual Basic.If a type is in an assembly known to your program at compile time, it is more efficient to use typeof in C# or the GetType operator in Visual Basic.

GetType fonctionne uniquement sur les assemblys chargés à partir du disque.GetType only works on assemblies loaded from disk. Si vous appelez GetType pour rechercher un type défini dans un assembly dynamique défini à l’aide des services System.Reflection.Emit, vous pouvez obtenir un comportement incohérent.If you call GetType to look up a type defined in a dynamic assembly defined using the System.Reflection.Emit services, you might get inconsistent behavior. Le comportement varie selon que l’assembly dynamique est persistant, c’est-à-dire créé à l’aide des modes d’accès RunAndSave ou Save de l’énumération System.Reflection.Emit.AssemblyBuilderAccess.The behavior depends on whether the dynamic assembly is persistent, that is, created using the RunAndSave or Save access modes of the System.Reflection.Emit.AssemblyBuilderAccess enumeration. Si l’assembly dynamique est persistant et a été écrit sur le disque avant l’appel de GetType, le chargeur recherche l’assembly enregistré sur le disque, charge cet assembly et récupère le type de cet assembly.If the dynamic assembly is persistent and has been written to disk before GetType is called, the loader finds the saved assembly on disk, loads that assembly, and retrieves the type from that assembly. Si l’assembly n’a pas été enregistré sur le disque lors de l’appel de GetType, la méthode retourne null.If the assembly has not been saved to disk when GetType is called, the method returns null. GetType ne comprend pas les assemblys dynamiques transitoires ; par conséquent, l’appel de GetType pour récupérer un type dans un assembly dynamique transitoire retourne null.GetType does not understand transient dynamic assemblies; therefore, calling GetType to retrieve a type in a transient dynamic assembly returns null.

Pour utiliser GetType sur un module dynamique, abonnez-vous à l’événement AppDomain.AssemblyResolve et appelez GetType avant d’enregistrer.To use GetType on a dynamic module, subscribe to the AppDomain.AssemblyResolve event and call GetType before saving. Dans le cas contraire, vous obtiendrez deux copies de l’assembly en mémoire.Otherwise, you will get two copies of the assembly in memory.

Le paramètre throwOnError spécifie ce qui se produit lorsque le type est introuvable et supprime également certaines autres conditions d’exception, comme décrit dans la section exceptions.The throwOnError parameter specifies what happens when the type is not found, and also suppresses certain other exception conditions, as described in the Exceptions section. Certaines exceptions sont levées indépendamment de la valeur de throwOnError.Some exceptions are thrown regardless of the value of throwOnError. Par exemple, si le type est trouvé mais ne peut pas être chargé, une TypeLoadException est levée même si throwOnError est false.For example, if the type is found but cannot be loaded, a TypeLoadException is thrown even if throwOnError is false.

Le tableau suivant répertorie les membres d’une classe de base qui sont retournés par les méthodes Get lors de la réflexion sur un type.The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

le type de membre.Member Type StaticStatic Non statiqueNon-Static
ConstructeurConstructor NonNo NonNo
ChampField NonNo Oui.Yes. Un champ est toujours masqué par nom-et-signature.A field is always hide-by-name-and-signature.
ÉvénementEvent Non applicableNot applicable La règle de système de type commun est que l’héritage est le même que celui des méthodes qui implémentent la propriété.The common type system rule is that the inheritance is the same as that of the methods that implement the property. La réflexion traite les propriétés comme étant masquées-par-nom-et-signature.Reflection treats properties as hide-by-name-and-signature. Voir la remarque 2 ci-dessous.See note 2 below.
MéthodeMethod NonNo Oui.Yes. Une méthode (à la fois virtuelles et non virtuelles) peut être masquée ou masquée-par-nom-et-signature.A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
Type imbriquéNested Type NonNo NonNo
PropriétéProperty Non applicableNot applicable La règle de système de type commun est que l’héritage est le même que celui des méthodes qui implémentent la propriété.The common type system rule is that the inheritance is the same as that of the methods that implement the property. La réflexion traite les propriétés comme étant masquées-par-nom-et-signature.Reflection treats properties as hide-by-name-and-signature. Voir la remarque 2 ci-dessous.See note 2 below.
  1. Hide-by-Name-and-signature prend en compte toutes les parties de la signature, y compris les modificateurs personnalisés, les types de retour, les types de paramètres, les sentinelles et les conventions d’appel non managées.Hide-by-name-and-signature considers all of the parts of the signature, including custom modifiers, return types, parameter types, sentinels, and unmanaged calling conventions. Il s’agit d’une comparaison binaire.This is a binary comparison.

  2. Pour la réflexion, les propriétés et les événements sont masqués par nom et signature.For reflection, properties and events are hide-by-name-and-signature. Si vous avez une propriété avec un accesseur get et un accesseur set dans la classe de base, mais que la classe dérivée a uniquement un accesseur Get, la propriété de la classe dérivée masque la propriété de la classe de base, et vous ne pouvez pas accéder à la méthode setter sur la classe de base.If you have a property with both a get and a set accessor in the base class, but the derived class has only a get accessor, the derived class property hides the base class property, and you will not be able to access the setter on the base class.

  3. Les attributs personnalisés ne font pas partie du système de type commun.Custom attributes are not part of the common type system.

Les tableaux ou les types COM ne sont pas recherchés, sauf s’ils ont déjà été chargés dans la table des classes disponibles.Arrays or COM types are not searched for unless they have already been loaded into the table of available classes.

typeName peut être le nom de type qualifié par son espace de noms ou un nom qualifié d’assembly qui comprend une spécification de nom d’assembly.typeName can be the type name qualified by its namespace or an assembly-qualified name that includes an assembly name specification. Consultez AssemblyQualifiedName.See AssemblyQualifiedName.

Si typeName comprend l’espace de noms, mais pas le nom de l’assembly, cette méthode recherche uniquement l’assembly de l’objet appelant et le fichier mscorlib. dll, dans cet ordre.If typeName includes the namespace but not the assembly name, this method searches only the calling object's assembly and Mscorlib.dll, in that order. Si typeName est qualifié complet avec le nom d’assembly partiel ou complet, cette méthode recherche dans l’assembly spécifié.If typeName is fully qualified with the partial or complete assembly name, this method searches in the specified assembly. Si l’assembly a un nom fort, un nom d’assembly complet est requis.If the assembly has a strong name, a complete assembly name is required.

La propriété AssemblyQualifiedName retourne un nom de type qualifié complet, y compris les types imbriqués, le nom de l’assembly et les arguments génériques.The AssemblyQualifiedName property returns a fully qualified type name including nested types, the assembly name, and generic arguments. Tous les compilateurs qui prennent en charge le common language runtime émettent le nom simple d’une classe imbriquée, et la réflexion construit un nom tronqué lorsqu’il est interrogé, conformément aux conventions suivantes.All compilers that support the common language runtime will emit the simple name of a nested class, and reflection constructs a mangled name when queried, in accordance with the following conventions.

Notes

Dans le .NET Framework version 2,0, architecture du processeur est ajouté à l’identité de l’assembly et peut être spécifié dans le cadre des chaînes de nom d’assembly.In the .NET Framework version 2.0, processor architecture is added to assembly identity, and can be specified as part of assembly name strings. Par exemple, « ProcessorArchitecture = MSIL ».For example, "ProcessorArchitecture=msil". Toutefois, il n’est pas inclus dans la chaîne retournée par la propriété AssemblyQualifiedName, pour des raisons de compatibilité.However, it is not included in the string returned by the AssemblyQualifiedName property, for compatibility reasons. Vous pouvez également charger des types en créant un objet AssemblyName et en le passant à une surcharge appropriée de la méthode Load.You can also load types by creating an AssemblyName object and passing it to an appropriate overload of the Load method. Vous pouvez ensuite utiliser la méthode Assembly.GetType pour charger des types à partir de l’assembly.You can then use the Assembly.GetType method to load types from the assembly. Voir aussi AssemblyName.ProcessorArchitecture.See also AssemblyName.ProcessorArchitecture.

DelimiterDelimiter SignificationMeaning
Barre oblique inverse (\)Backslash (\) Caractère d’échappement.Escape character.
Tops (')Backtick (`) Précède un ou plusieurs chiffres représentant le nombre de paramètres de type, situés à la fin du nom d’un type générique.Precedes one or more digits representing the number of type parameters, located at the end of the name of a generic type.
Crochets ([])Brackets ([]) 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.Enclose a generic type argument list, for a constructed generic type; within a type argument list, enclose an assembly-qualified type.
Virgule (,)Comma (,) Précède le nom de l’assembly.Precedes the Assembly name.
Point (.)Period (.) Indique des identificateurs d’espace de noms.Denotes namespace identifiers.
Signe plus (+)Plus sign (+) Précède une classe imbriquée.Precedes a nested class.

Par exemple, le nom qualifié complet d’une classe peut se présenter comme suit :For example, the fully qualified name for a class might look like this:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly  

Si l’espace de noms était à l’espace de noms. sous + espace de noms, la chaîne devra précéder le signe plus (+) d’un caractère d’échappement (\) pour l’empêcher d’être interprété comme un séparateur d’imbrication.If the namespace were TopNamespace.Sub+Namespace, then the string would have to precede the plus sign (+) with an escape character (\) to prevent it from being interpreted as a nesting separator. La réflexion émet cette chaîne comme suit :Reflection emits this string as follows:

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

Un « + + » devient «\+\+ » et un «\» devient «\\».A "++" becomes "\+\+", and a "\" becomes "\\".

Ce nom qualifié peut être persistant et utilisé ultérieurement pour charger le Type.This qualified name can be persisted and later used to load the Type. Pour rechercher et charger un Type, utilisez GetType avec le nom de type uniquement ou avec le nom de type qualifié d’assembly.To search for and load a Type, use GetType either with the type name only or with the assembly qualified type name. GetType avec le nom de type recherche uniquement les Type dans l’assembly de l’appelant, puis dans l’assembly système.GetType with the type name only will look for the Type in the caller's assembly and then in the System assembly. GetType avec le nom de type qualifié d’assembly recherche le Type dans n’importe quel assembly.GetType with the assembly qualified type name will look for the Type in any assembly.

Les noms de types peuvent inclure des caractères de fin qui désignent 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.Type names may include trailing characters that denote additional information about the type, such as whether the type is a reference type, a pointer type or an array type. Pour récupérer le nom du type sans ces caractères de fin, utilisez t.GetElementType().ToString(), où t est le type.To retrieve the type name without these trailing characters, use t.GetElementType().ToString(), where t is the type.

Les espaces sont pertinents dans tous les composants de nom de type, à l’exception du nom de l’assembly.Spaces are relevant in all type name components except the assembly name. Dans le nom de l’assembly, les espaces situés avant le séparateur « , » sont pertinents, mais les espaces après le séparateur « , » sont ignorés.In the assembly name, spaces before the ',' separator are relevant, but spaces after the ',' separator are ignored.

Le nom d’un type générique se termine par un surcycle (`) suivi de chiffres représentant le nombre d’arguments de type générique.The name of a generic type ends with a backtick (`) followed by digits representing the number of generic type arguments. L’objectif de cette gestion de noms est de permettre aux compilateurs de 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.The purpose of this name mangling is to allow compilers to support generic types with the same name but with different numbers of type parameters, occurring in the same scope. Par exemple, la réflexion retourne les noms tronqués Tuple1andTuple2 des méthodes génériques Tuple(Of T) et Tuple(Of T0, T1) dans Visual Basic, ou Tuple<T> et Tuple\<T0, T1> en C#Visual.For example, reflection returns the mangled names Tuple1andTuple2 from the generic methods Tuple(Of T) and Tuple(Of T0, T1) in Visual Basic, or Tuple<T> and Tuple\<T0, T1> in Visual C#.

Pour les types génériques, la liste d’arguments de type est placée entre crochets et les arguments de type sont séparés par des virgules.For generic types, the type argument list is enclosed in brackets, and the type arguments are separated by commas. Par exemple, un Dictionary<TKey,TValue> générique a deux paramètres de type.For example, a generic Dictionary<TKey,TValue> has two type parameters. Une Dictionary<TKey,TValue> de MyType avec des clés de type String peut être représentée comme suit :A Dictionary<TKey,TValue> of MyType with keys of type String might be represented as follows:

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

Pour spécifier un type qualifié d’assembly dans une liste d’arguments de type, placez le type qualifié d’assembly entre crochets.To specify an assembly-qualified type within a type argument list, enclose the assembly-qualified type within brackets. 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.Otherwise, the commas that separate the parts of the assembly-qualified name are interpreted as delimiting additional type arguments. Par exemple, une Dictionary<TKey,TValue> de MyType de MyAssembly. dll, avec des clés de type String, peut être spécifiée comme suit :For example, a Dictionary<TKey,TValue> of MyType from MyAssembly.dll, with keys of type String, might be specified as follows:

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

Notes

Un type qualifié d’assembly peut être placé entre crochets uniquement lorsqu’il apparaît dans une liste de paramètres de type.An assembly-qualified type can be enclosed in brackets only when it appears within a type parameter list. Les règles de recherche d’assemblys pour les types qualifiés et non qualifiés dans les listes de paramètres de type sont les mêmes que les règles pour les types non génériques qualifiés et non qualifiés.The rules for searching assemblies for qualified and unqualified types in type parameter lists are the same as the rules for qualified and unqualified nongeneric types.

Les types Nullable sont un cas spécial de types génériques.Nullable types are a special case of generic types. Par exemple, un Int32 Nullable est représenté par la chaîne "System. Nullable' 1 [System. Int32]".For example, a nullable Int32 is represented by the string "System.Nullable`1[System.Int32]".

Notes

Dans C#, C++et Visual Basic vous pouvez également récupérer des types Nullable à l’aide d’opérateurs de type.In C#, C++, and Visual Basic you can also get nullable types using type operators. Par exemple, le type de Boolean Nullable est retourné par typeof(Nullable<bool>) C#dans, par Nullable<Boolean>::typeid C++dans et par GetType(Nullable(Of Boolean)) dans Visual Basic.For example, the nullable Boolean type is returned by typeof(Nullable<bool>) in C#, by Nullable<Boolean>::typeid in C++, and by GetType(Nullable(Of Boolean)) in Visual Basic.

Le tableau suivant montre la syntaxe que vous utilisez avec GetType pour différents types.The following table shows the syntax you use with GetType for various types.

Pour accéderTo Get UtilisezUse
Int32 NullableA nullable Int32 Type.GetType("System.Nullable`1[System.Int32]")
Pointeur non managé vers MyTypeAn unmanaged pointer to MyType Type.GetType("MyType*")
Pointeur non managé vers un pointeur vers MyTypeAn unmanaged pointer to a pointer to MyType Type.GetType("MyType**")
Pointeur managé ou référence à MyTypeA managed pointer or reference to MyType Type.GetType("MyType&").,Type.GetType("MyType&"). Notez que contrairement aux pointeurs, les références sont limitées à un niveau.Note that unlike pointers, references are limited to one level.
Une classe parente et une classe imbriquéeA parent class and a nested class Type.GetType("MyParentClass+MyNestedClass")
Tableau unidimensionnel avec une limite inférieure de 0A one-dimensional array with a lower bound of 0 Type.GetType("MyArray[]")
Tableau unidimensionnel avec une limite inférieure inconnueA one-dimensional array with an unknown lower bound Type.GetType("MyArray[*]")
Tableau à n dimensionsAn n-dimensional array Virgule (,) à l’intérieur des crochets un total de n-1 fois.A comma (,) inside the brackets a total of n-1 times. Par exemple, System.Object[,,] représente un tableau de Object à trois dimensions.For example, System.Object[,,] represents a three-dimensional Object array.
Tableau d’un tableau à deux dimensionsA two-dimensional array's array Type.GetType("MyArray[][]")
Tableau rectangulaire à deux dimensions avec limites inférieures inconnuesA rectangular two-dimensional array with unknown lower bounds Type.GetType("MyArray[,]")
Type générique avec un argument de typeA generic type with one type argument Type.GetType("MyGenericType`1[MyType]")
Type générique avec deux arguments de typeA generic type with two type arguments Type.GetType("MyGenericType`2[MyType,AnotherType]")
Type générique avec deux arguments de type qualifiés par un assemblyA generic type with two assembly-qualified type arguments Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
Type générique qualifié d’assembly avec un argument de type qualifié d’assemblyAn assembly-qualified generic type with an assembly-qualified type argument Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
Type générique dont l’argument de type est un type générique avec deux arguments de typeA generic type whose type argument is a generic type with two type arguments Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")

Voir aussi

GetType(String, Boolean, Boolean)

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.Gets the Type with the specified name, specifying whether to throw an exception if the type is not found and whether to perform a case-sensitive search.

public:
 static Type ^ GetType(System::String ^ typeName, bool throwOnError, bool ignoreCase);
public static Type GetType (string typeName, bool throwOnError, bool ignoreCase);
static member GetType : string * bool * bool -> Type
Public Shared Function GetType (typeName As String, throwOnError As Boolean, ignoreCase As Boolean) As Type

Paramètres

typeName
String

Nom qualifié d'assembly du type à obtenir.The assembly-qualified name of the type to get. Consultez AssemblyQualifiedName.See 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.If the type is in the currently executing assembly or in Mscorlib.dll, it is sufficient to supply the type name qualified by its namespace.

throwOnError
Boolean

true pour lever une exception si le type est introuvable ; false pour retourner null.true to throw an exception if the type cannot be found; false to return null. false supprime également d'autres conditions d'exception, mais pas toutes.Specifying false also suppresses some other exception conditions, but not all of them. Consultez la section Exceptions.See the Exceptions section.

ignoreCase
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.true to perform a case-insensitive search for typeName, false to perform a case-sensitive search for typeName.

Retours

Type portant le nom spécifié.The type with the specified name. Si le type est introuvable, le paramètre throwOnError spécifie si null est retourné ou bien une exception est levée.If the type is not found, the throwOnError parameter specifies whether null is returned or an exception is thrown. Dans certains cas, une exception est levée indépendamment de la valeur de throwOnError.In some cases, an exception is thrown regardless of the value of throwOnError. Consultez la section Exceptions.See the Exceptions section.

Exceptions

typeName a la valeur null.typeName is null.

Un initialiseur de classe est appelé et lève une exception.A class initializer is invoked and throws an exception.

throwOnError a la valeur true et le type est introuvable.throwOnError is true and the type is not found.

-ou--or- throwOnError a la valeur true et typeName contient des caractères non valides, tels qu’une tabulation incorporée.throwOnError is true and typeName contains invalid characters, such as an embedded tab. -ou--or- throwOnError a la valeur true et typeName est une chaîne vide.throwOnError is true and typeName is an empty string.

-ou--or- throwOnError a la valeur true et typeName représente un type de tableau avec une taille non valide.throwOnError is true and typeName represents an array type with an invalid size.

-ou--or- typeName représente un tableau de TypedReference.typeName represents an array of TypedReference.

throwOnError a la valeur true et typeName contient une syntaxe non valide.throwOnError is true and typeName contains invalid syntax. Par exemple, « MyType [, *,] ».For example, "MyType[,*,]".

-ou--or- 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.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

-ou--or- typeName représente un type générique qui a un nombre incorrect d’arguments de type.typeName represents a generic type that has an incorrect number of type arguments.

-ou--or- 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.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

throwOnError a la valeur true et l’assembly ou l’une de ses dépendances est introuvable.throwOnError is true and the assembly or one of its dependencies was not found.

L’assembly ou une de ses dépendances a été trouvé, mais n’a pas pu être chargé.The assembly or one of its dependencies was found, but could not be loaded.

L’assembly ou une de ses dépendances n’est pas valide.The assembly or one of its dependencies is not valid.

-ou--or-

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.Version 2.0 or later of the common language runtime is currently loaded, and the assembly was compiled with a later version.

Remarques

Vous pouvez utiliser la méthode GetType pour obtenir un objet Type pour un type dans un autre assembly, si vous connaissez son nom qualifié d’assembly, qui peut être obtenu à partir de AssemblyQualifiedName.You can use the GetType method to obtain a Type object for a type in another assembly if you know its assembly-qualified name, which can be obtained from AssemblyQualifiedName. GetType provoque le chargement de l’assembly spécifié dans typeName.GetType causes loading of the assembly specified in typeName. Vous pouvez également charger un assembly à l’aide de la méthode Assembly.Load, puis utiliser la méthode Assembly.GetType ou Assembly.GetTypes pour récupérer des objets Type.You can also load an assembly using the Assembly.Load method, and then use the Assembly.GetType or Assembly.GetTypes method to get Type objects. Si un type se trouve dans un assembly connu de votre programme au moment de la compilation, il est plus efficace C# d’utiliser typeof dans ou l’opérateur GetType dans Visual Basic.If a type is in an assembly known to your program at compile time, it is more efficient to use typeof in C# or the GetType operator in Visual Basic.

GetType fonctionne uniquement sur les assemblys chargés à partir du disque.GetType only works on assemblies loaded from disk. Si vous appelez GetType pour rechercher un type défini dans un assembly dynamique défini à l’aide des services System.Reflection.Emit, vous pouvez obtenir un comportement incohérent.If you call GetType to look up a type defined in a dynamic assembly defined using the System.Reflection.Emit services, you might get inconsistent behavior. Le comportement varie selon que l’assembly dynamique est persistant, c’est-à-dire créé à l’aide des modes d’accès RunAndSave ou Save de l’énumération System.Reflection.Emit.AssemblyBuilderAccess.The behavior depends on whether the dynamic assembly is persistent, that is, created using the RunAndSave or Save access modes of the System.Reflection.Emit.AssemblyBuilderAccess enumeration. Si l’assembly dynamique est persistant et a été écrit sur le disque avant l’appel de GetType, le chargeur recherche l’assembly enregistré sur le disque, charge cet assembly et récupère le type de cet assembly.If the dynamic assembly is persistent and has been written to disk before GetType is called, the loader finds the saved assembly on disk, loads that assembly, and retrieves the type from that assembly. Si l’assembly n’a pas été enregistré sur le disque lors de l’appel de GetType, la méthode retourne null.If the assembly has not been saved to disk when GetType is called, the method returns null. GetType ne comprend pas les assemblys dynamiques transitoires ; par conséquent, l’appel de GetType pour récupérer un type dans un assembly dynamique transitoire retourne null.GetType does not understand transient dynamic assemblies; therefore, calling GetType to retrieve a type in a transient dynamic assembly returns null.

Pour utiliser GetType sur un module dynamique, abonnez-vous à l’événement AppDomain.AssemblyResolve et appelez GetType avant d’enregistrer.To use GetType on a dynamic module, subscribe to the AppDomain.AssemblyResolve event and call GetType before saving. Dans le cas contraire, vous obtiendrez deux copies de l’assembly en mémoire.Otherwise, you will get two copies of the assembly in memory.

Le paramètre throwOnError spécifie ce qui se produit lorsque le type est introuvable et supprime également certaines autres conditions d’exception, comme décrit dans la section exceptions.The throwOnError parameter specifies what happens when the type is not found, and also suppresses certain other exception conditions, as described in the Exceptions section. Certaines exceptions sont levées indépendamment de la valeur de throwOnError.Some exceptions are thrown regardless of the value of throwOnError. Par exemple, si le type est trouvé mais ne peut pas être chargé, une TypeLoadException est levée même si throwOnError est false.For example, if the type is found but cannot be loaded, a TypeLoadException is thrown even if throwOnError is false.

Le tableau suivant répertorie les membres d’une classe de base qui sont retournés par les méthodes Get lors de la réflexion sur un type.The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

le type de membre.Member Type StaticStatic Non statiqueNon-Static
ConstructeurConstructor NonNo NonNo
ChampField NonNo Oui.Yes. Un champ est toujours masqué par nom-et-signature.A field is always hide-by-name-and-signature.
ÉvénementEvent Non applicableNot applicable La règle de système de type commun est que l’héritage est le même que celui des méthodes qui implémentent la propriété.The common type system rule is that the inheritance is the same as that of the methods that implement the property. La réflexion traite les propriétés comme étant masquées-par-nom-et-signature.Reflection treats properties as hide-by-name-and-signature. Voir la remarque 2 ci-dessous.See note 2 below.
MéthodeMethod NonNo Oui.Yes. Une méthode (à la fois virtuelles et non virtuelles) peut être masquée ou masquée-par-nom-et-signature.A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
Type imbriquéNested Type NonNo NonNo
PropriétéProperty Non applicableNot applicable La règle de système de type commun est que l’héritage est le même que celui des méthodes qui implémentent la propriété.The common type system rule is that the inheritance is the same as that of the methods that implement the property. La réflexion traite les propriétés comme étant masquées-par-nom-et-signature.Reflection treats properties as hide-by-name-and-signature. Voir la remarque 2 ci-dessous.See note 2 below.
  1. Hide-by-Name-and-signature prend en compte toutes les parties de la signature, y compris les modificateurs personnalisés, les types de retour, les types de paramètres, les sentinelles et les conventions d’appel non managées.Hide-by-name-and-signature considers all of the parts of the signature, including custom modifiers, return types, parameter types, sentinels, and unmanaged calling conventions. Il s’agit d’une comparaison binaire.This is a binary comparison.

  2. Pour la réflexion, les propriétés et les événements sont masqués par nom et signature.For reflection, properties and events are hide-by-name-and-signature. Si vous avez une propriété avec un accesseur get et un accesseur set dans la classe de base, mais que la classe dérivée a uniquement un accesseur Get, la propriété de la classe dérivée masque la propriété de la classe de base, et vous ne pouvez pas accéder à la méthode setter sur la classe de base.If you have a property with both a get and a set accessor in the base class, but the derived class has only a get accessor, the derived class property hides the base class property, and you will not be able to access the setter on the base class.

  3. Les attributs personnalisés ne font pas partie du système de type commun.Custom attributes are not part of the common type system.

Les tableaux ou les types COM ne sont pas recherchés, sauf s’ils ont déjà été chargés dans la table des classes disponibles.Arrays or COM types are not searched for unless they have already been loaded into the table of available classes.

typeName peut être le nom de type qualifié par son espace de noms ou un nom qualifié d’assembly qui comprend une spécification de nom d’assembly.typeName can be the type name qualified by its namespace or an assembly-qualified name that includes an assembly name specification. Consultez AssemblyQualifiedName.See AssemblyQualifiedName.

Si typeName comprend l’espace de noms, mais pas le nom de l’assembly, cette méthode recherche uniquement l’assembly de l’objet appelant et le fichier mscorlib. dll, dans cet ordre.If typeName includes the namespace but not the assembly name, this method searches only the calling object's assembly and Mscorlib.dll, in that order. Si typeName est qualifié complet avec le nom d’assembly partiel ou complet, cette méthode recherche dans l’assembly spécifié.If typeName is fully qualified with the partial or complete assembly name, this method searches in the specified assembly. Si l’assembly a un nom fort, un nom d’assembly complet est requis.If the assembly has a strong name, a complete assembly name is required.

La propriété AssemblyQualifiedName retourne un nom de type qualifié complet, y compris les types imbriqués, le nom de l’assembly et les arguments de type.The AssemblyQualifiedName property returns a fully qualified type name including nested types, the assembly name, and type arguments. Tous les compilateurs qui prennent en charge le common language runtime émettent le nom simple d’une classe imbriquée, et la réflexion construit un nom tronqué lorsqu’il est interrogé, conformément aux conventions suivantes.All compilers that support the common language runtime will emit the simple name of a nested class, and reflection constructs a mangled name when queried, in accordance with the following conventions.

Notes

Dans le .NET Framework version 2,0, architecture du processeur est ajouté à l’identité de l’assembly et peut être spécifié dans le cadre des chaînes de nom d’assembly.In the .NET Framework version 2.0, processor architecture is added to assembly identity, and can be specified as part of assembly name strings. Par exemple, « ProcessorArchitecture = MSIL ».For example, "ProcessorArchitecture=msil". Toutefois, il n’est pas inclus dans la chaîne retournée par la propriété AssemblyQualifiedName, pour des raisons de compatibilité.However, it is not included in the string returned by the AssemblyQualifiedName property, for compatibility reasons. Vous pouvez également charger des types en créant un objet AssemblyName et en le passant à une surcharge appropriée de la méthode Load.You can also load types by creating an AssemblyName object and passing it to an appropriate overload of the Load method. Vous pouvez ensuite utiliser la méthode Assembly.GetType pour charger des types à partir de l’assembly.You can then use the Assembly.GetType method to load types from the assembly. Voir aussi AssemblyName.ProcessorArchitecture.See also AssemblyName.ProcessorArchitecture.

DelimiterDelimiter SignificationMeaning
Barre oblique inverse (\)Backslash (\) Caractère d’échappement.Escape character.
Tops (')Backtick (`) Précède un ou plusieurs chiffres représentant le nombre de paramètres de type, situés à la fin du nom d’un type générique.Precedes one or more digits representing the number of type parameters, located at the end of the name of a generic type.
Crochets ([])Brackets ([]) 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.Enclose a generic type argument list, for a constructed generic type; within a type argument list, enclose an assembly-qualified type.
Virgule (,)Comma (,) Précède le nom de l’assembly.Precedes the Assembly name.
Point (.)Period (.) Indique des identificateurs d’espace de noms.Denotes namespace identifiers.
Signe plus (+)Plus sign (+) Précède une classe imbriquée.Precedes a nested class.

Par exemple, le nom qualifié complet d’une classe peut se présenter comme suit :For example, the fully qualified name for a class might look like this:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly  

Si l’espace de noms était à l’espace de noms. sous + espace de noms, la chaîne devra précéder le signe plus (+) d’un caractère d’échappement (\) pour l’empêcher d’être interprété comme un séparateur d’imbrication.If the namespace were TopNamespace.Sub+Namespace, then the string would have to precede the plus sign (+) with an escape character (\) to prevent it from being interpreted as a nesting separator. La réflexion émet cette chaîne comme suit :Reflection emits this string as follows:

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

Un « + + » devient «\+\+ » et un «\» devient «\\».A "++" becomes "\+\+", and a "\" becomes "\\".

Ce nom qualifié peut être persistant et utilisé ultérieurement pour charger le Type.This qualified name can be persisted and later used to load the Type. Pour rechercher et charger un Type, utilisez GetType avec le nom de type uniquement ou avec le nom de type qualifié d’assembly.To search for and load a Type, use GetType either with the type name only or with the assembly qualified type name. GetType avec le nom de type recherche uniquement les Type dans l’assembly de l’appelant, puis dans l’assembly système.GetType with the type name only will look for the Type in the caller's assembly and then in the System assembly. GetType avec le nom de type qualifié d’assembly recherche le Type dans n’importe quel assembly.GetType with the assembly qualified type name will look for the Type in any assembly.

Les noms de types peuvent inclure des caractères de fin qui désignent 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.Type names may include trailing characters that denote additional information about the type, such as whether the type is a reference type, a pointer type or an array type. Pour récupérer le nom du type sans ces caractères de fin, utilisez t.GetElementType().ToString(), où t est le type.To retrieve the type name without these trailing characters, use t.GetElementType().ToString(), where t is the type.

Les espaces sont pertinents dans tous les composants de nom de type, à l’exception du nom de l’assembly.Spaces are relevant in all type name components except the assembly name. Dans le nom de l’assembly, les espaces situés avant le séparateur « , » sont pertinents, mais les espaces après le séparateur « , » sont ignorés.In the assembly name, spaces before the ',' separator are relevant, but spaces after the ',' separator are ignored.

Le nom d’un type générique se termine par un surcycle (`) suivi de chiffres représentant le nombre d’arguments de type générique.The name of a generic type ends with a backtick (`) followed by digits representing the number of generic type arguments. L’objectif de cette gestion de noms est de permettre aux compilateurs de 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.The purpose of this name mangling is to allow compilers to support generic types with the same name but with different numbers of type parameters, occurring in the same scope. Par exemple, la réflexion retourne les noms tronqués Tuple1andTuple2 des méthodes génériques Tuple(Of T) et Tuple(Of T0, T1) dans Visual Basic, ou Tuple<T> et Tuple\<T0, T1> en C#Visual.For example, reflection returns the mangled names Tuple1andTuple2 from the generic methods Tuple(Of T) and Tuple(Of T0, T1) in Visual Basic, or Tuple<T> and Tuple\<T0, T1> in Visual C#.

Pour les types génériques, la liste d’arguments de type est placée entre crochets et les arguments de type sont séparés par des virgules.For generic types, the type argument list is enclosed in brackets, and the type arguments are separated by commas. Par exemple, un Dictionary<TKey,TValue> générique a deux paramètres de type.For example, a generic Dictionary<TKey,TValue> has two type parameters. Une Dictionary<TKey,TValue> de MyType avec des clés de type String peut être représentée comme suit :A Dictionary<TKey,TValue> of MyType with keys of type String might be represented as follows:

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

Pour spécifier un type qualifié d’assembly dans une liste d’arguments de type, placez le type qualifié d’assembly entre crochets.To specify an assembly-qualified type within a type argument list, enclose the assembly-qualified type within brackets. 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.Otherwise, the commas that separate the parts of the assembly-qualified name are interpreted as delimiting additional type arguments. Par exemple, une Dictionary<TKey,TValue> de MyType de MyAssembly. dll, avec des clés de type String, peut être spécifiée comme suit :For example, a Dictionary<TKey,TValue> of MyType from MyAssembly.dll, with keys of type String, might be specified as follows:

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

Notes

Un type qualifié d’assembly peut être placé entre crochets uniquement lorsqu’il apparaît dans une liste de paramètres de type.An assembly-qualified type can be enclosed in brackets only when it appears within a type parameter list. Les règles de recherche d’assemblys pour les types qualifiés et non qualifiés dans les listes de paramètres de type sont les mêmes que les règles pour les types non génériques qualifiés et non qualifiés.The rules for searching assemblies for qualified and unqualified types in type parameter lists are the same as the rules for qualified and unqualified nongeneric types.

Les types Nullable sont un cas spécial de types génériques.Nullable types are a special case of generic types. Par exemple, un Int32 Nullable est représenté par la chaîne "System. Nullable' 1 [System. Int32]".For example, a nullable Int32 is represented by the string "System.Nullable`1[System.Int32]".

Notes

Dans C#, C++et Visual Basic vous pouvez également récupérer des types Nullable à l’aide d’opérateurs de type.In C#, C++, and Visual Basic you can also get nullable types using type operators. Par exemple, le type de Boolean Nullable est retourné par typeof(Nullable<bool>) C#dans, par Nullable<Boolean>::typeid C++dans et par GetType(Nullable(Of Boolean)) dans Visual Basic.For example, the nullable Boolean type is returned by typeof(Nullable<bool>) in C#, by Nullable<Boolean>::typeid in C++, and by GetType(Nullable(Of Boolean)) in Visual Basic.

Le tableau suivant montre la syntaxe que vous utilisez avec GetType pour différents types.The following table shows the syntax you use with GetType for various types.

Pour accéderTo Get UtilisezUse
Int32 NullableA nullable Int32 Type.GetType("System.Nullable`1[System.Int32]")
Pointeur non managé vers MyTypeAn unmanaged pointer to MyType Type.GetType("MyType*")
Pointeur non managé vers un pointeur vers MyTypeAn unmanaged pointer to a pointer to MyType Type.GetType("MyType**")
Pointeur managé ou référence à MyTypeA managed pointer or reference to MyType Type.GetType("MyType&").,Type.GetType("MyType&"). Notez que contrairement aux pointeurs, les références sont limitées à un niveau.Note that unlike pointers, references are limited to one level.
Une classe parente et une classe imbriquéeA parent class and a nested class Type.GetType("MyParentClass+MyNestedClass")
Tableau unidimensionnel avec une limite inférieure de 0A one-dimensional array with a lower bound of 0 Type.GetType("MyArray[]")
Tableau unidimensionnel avec une limite inférieure inconnueA one-dimensional array with an unknown lower bound Type.GetType("MyArray[*]")
Tableau à n dimensionsAn n-dimensional array Virgule (,) à l’intérieur des crochets un total de n-1 fois.A comma (,) inside the brackets a total of n-1 times. Par exemple, System.Object[,,] représente un tableau de Object à trois dimensions.For example, System.Object[,,] represents a three-dimensional Object array.
Tableau d’un tableau à deux dimensionsA two-dimensional array's array Type.GetType("MyArray[][]")
Tableau rectangulaire à deux dimensions avec limites inférieures inconnuesA rectangular two-dimensional array with unknown lower bounds Type.GetType("MyArray[,]")
Type générique avec un argument de typeA generic type with one type argument Type.GetType("MyGenericType`1[MyType]")
Type générique avec deux arguments de typeA generic type with two type arguments Type.GetType("MyGenericType`2[MyType,AnotherType]")
Type générique avec deux arguments de type qualifiés par un assemblyA generic type with two assembly-qualified type arguments Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
Type générique qualifié d’assembly avec un argument de type qualifié d’assemblyAn assembly-qualified generic type with an assembly-qualified type argument Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
Type générique dont l’argument de type est un type générique avec deux arguments de typeA generic type whose type argument is a generic type with two type arguments Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")

Voir aussi

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>)

Obtient le type avec le nom spécifié et éventuellement des méthodes personnalisées permettant de résoudre l'assembly et le type.Gets the type with the specified name, optionally providing custom methods to resolve the assembly and the type.

public:
 static Type ^ GetType(System::String ^ typeName, Func<System::Reflection::AssemblyName ^, System::Reflection::Assembly ^> ^ assemblyResolver, Func<System::Reflection::Assembly ^, System::String ^, bool, Type ^> ^ typeResolver);
public static Type GetType (string typeName, Func<System.Reflection.AssemblyName,System.Reflection.Assembly> assemblyResolver, Func<System.Reflection.Assembly,string,bool,Type> typeResolver);
static member GetType : string * Func<System.Reflection.AssemblyName, System.Reflection.Assembly> * Func<System.Reflection.Assembly, string, bool, Type> -> Type
Public Shared Function GetType (typeName As String, assemblyResolver As Func(Of AssemblyName, Assembly), typeResolver As Func(Of Assembly, String, Boolean, Type)) As Type

Paramètres

typeName
String

Nom du type à obtenir.The name of the type to get. Si le paramètre typeResolver est fourni, le nom de type peut être n'importe quelle chaîne pouvant être résolue par typeResolver.If the typeResolver parameter is provided, the type name can be any string that typeResolver is capable of resolving. Si le paramètre assemblyResolver est fourni ou si la résolution de type standard est utilisée, typeName doit être un nom d'assembly complet (consultez AssemblyQualifiedName), à moins que le type ne se trouve dans l'assembly en cours d'exécution ou dans Mscorlib.dll, cas dans lequel il suffit de fournir le nom de type qualifié par son espace de noms.If the assemblyResolver parameter is provided or if standard type resolution is used, typeName must be an assembly-qualified name (see AssemblyQualifiedName), unless the type is in the currently executing assembly or in Mscorlib.dll, in which case it is sufficient to supply the type name qualified by its namespace.

assemblyResolver
Func<AssemblyName,Assembly>

Méthode qui trouve et retourne l'assembly spécifié dans typeName.A method that locates and returns the assembly that is specified in typeName. Le nom de l'assembly est passé à assemblyResolver en tant qu'objet AssemblyName.The assembly name is passed to assemblyResolver as an AssemblyName object. Si typeName ne contient pas le nom d'un assembly, assemblyResolver n'est pas appelé.If typeName does not contain the name of an assembly, assemblyResolver is not called. Si assemblyResolver n'est pas fourni, une résolution d'assembly standard est effectuée.If assemblyResolver is not supplied, standard assembly resolution is performed.

Attention   Ne passez pas de méthodes provenant d’appelants inconnus ou non fiables.Caution Do not pass methods from unknown or untrusted callers. Vous risqueriez d'élever les privilèges du code malveillant.Doing so could result in elevation of privilege for malicious code. Utilisez uniquement les méthodes que vous fournissez ou avec lesquelles vous êtes familiarisé.Use only methods that you provide or that you are familiar with.

typeResolver
Func<Assembly,String,Boolean,Type>

Méthode qui trouve et retourne le type spécifié par typeName à partir de l'assembly retourné par assemblyResolver ou par la résolution d'assembly standard.A method that locates and returns the type that is specified by typeName from the assembly that is returned by assemblyResolver or by standard assembly resolution. Si aucun assembly n'est fourni, la méthode typeResolver peut en fournir un.If no assembly is provided, the typeResolver method can provide one. La méthode prend également un paramètre qui spécifie s'il faut exécuter une recherche non sensible à la casse ; false est passé à ce paramètre.The method also takes a parameter that specifies whether to perform a case-insensitive search; false is passed to that parameter.

Attention   Ne passez pas de méthodes provenant d’appelants inconnus ou non fiables.Caution Do not pass methods from unknown or untrusted callers.

Retours

Type portant le nom spécifié, ou null si le type est introuvable.The type with the specified name, or null if the type is not found.

Exceptions

typeName a la valeur null.typeName is null.

Un initialiseur de classe est appelé et lève une exception.A class initializer is invoked and throws an exception.

Une erreur se produit quand typeName est analysé dans un nom de type et un nom d’assembly (par exemple, quand le nom de type simple inclut un caractère spécial sans séquence d’échappement).An error occurs when typeName is parsed into a type name and an assembly name (for example, when the simple type name includes an unescaped special character).

-ou--or- 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.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

-ou--or- typeName représente un type générique qui a un nombre incorrect d’arguments de type.typeName represents a generic type that has an incorrect number of type arguments.

-ou--or- 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.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

typeName représente un tableau de TypedReference.typeName represents an array of TypedReference.

L’assembly ou une de ses dépendances a été trouvé, mais n’a pas pu être chargé.The assembly or one of its dependencies was found, but could not be loaded.

-ou--or- typeName contient un nom d’assembly non valide.typeName contains an invalid assembly name.

-ou--or- typeName est un nom d’assembly valide sans nom de type.typeName is a valid assembly name without a type name.

L’assembly ou une de ses dépendances n’est pas valide.The assembly or one of its dependencies is not valid.

-ou--or-

L’assembly a été compilé avec une version du Common Language Runtime postérieure à la version actuellement chargée.The assembly was compiled with a later version of the common language runtime than the version that is currently loaded.

Remarques

Les scénarios d’utilisation de cette méthode et les détails sur les paramètres assemblyResolver et typeResolver se trouvent dans la surcharge de méthode GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean).Usage scenarios for this method and details about the assemblyResolver and typeResolver parameters can be found in the GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) method overload.

Notes

Si typeName est introuvable, l’appel à la méthode GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) retourne null.If typeName cannot be found, the call to the GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) method returns null. Elle ne lève pas d’exception.It does not throw an exception. Pour contrôler si une exception est levée, appelez une surcharge de la méthode GetType qui a un paramètre throwOnError.To control whether an exception is thrown, call an overload of the GetType method that has a throwOnError parameter.

L’appel de cette surcharge de méthode est identique à l’appel de la surcharge de méthode GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) et à la spécification d' false pour les paramètres throwOnError et ignoreCase.Calling this method overload is the same as calling the GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) method overload and specifying false for the throwOnError and ignoreCase parameters.

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean)

Obtient le type portant le nom spécifié, en indiquant s'il faut lever une exception si le type est introuvable et, éventuellement, en fournissant des méthodes personnalisées qui permettent de résoudre l'assembly et le type.Gets the type with the specified name, specifying whether to throw an exception if the type is not found, and optionally providing custom methods to resolve the assembly and the type.

public:
 static Type ^ GetType(System::String ^ typeName, Func<System::Reflection::AssemblyName ^, System::Reflection::Assembly ^> ^ assemblyResolver, Func<System::Reflection::Assembly ^, System::String ^, bool, Type ^> ^ typeResolver, bool throwOnError);
public static Type GetType (string typeName, Func<System.Reflection.AssemblyName,System.Reflection.Assembly> assemblyResolver, Func<System.Reflection.Assembly,string,bool,Type> typeResolver, bool throwOnError);
static member GetType : string * Func<System.Reflection.AssemblyName, System.Reflection.Assembly> * Func<System.Reflection.Assembly, string, bool, Type> * bool -> Type
Public Shared Function GetType (typeName As String, assemblyResolver As Func(Of AssemblyName, Assembly), typeResolver As Func(Of Assembly, String, Boolean, Type), throwOnError As Boolean) As Type

Paramètres

typeName
String

Nom du type à obtenir.The name of the type to get. Si le paramètre typeResolver est fourni, le nom de type peut être n'importe quelle chaîne pouvant être résolue par typeResolver.If the typeResolver parameter is provided, the type name can be any string that typeResolver is capable of resolving. Si le paramètre assemblyResolver est fourni ou si la résolution de type standard est utilisée, typeName doit être un nom d'assembly complet (consultez AssemblyQualifiedName), à moins que le type ne se trouve dans l'assembly en cours d'exécution ou dans Mscorlib.dll, cas dans lequel il suffit de fournir le nom de type qualifié par son espace de noms.If the assemblyResolver parameter is provided or if standard type resolution is used, typeName must be an assembly-qualified name (see AssemblyQualifiedName), unless the type is in the currently executing assembly or in Mscorlib.dll, in which case it is sufficient to supply the type name qualified by its namespace.

assemblyResolver
Func<AssemblyName,Assembly>

Méthode qui trouve et retourne l'assembly spécifié dans typeName.A method that locates and returns the assembly that is specified in typeName. Le nom de l'assembly est passé à assemblyResolver en tant qu'objet AssemblyName.The assembly name is passed to assemblyResolver as an AssemblyName object. Si typeName ne contient pas le nom d'un assembly, assemblyResolver n'est pas appelé.If typeName does not contain the name of an assembly, assemblyResolver is not called. Si assemblyResolver n'est pas fourni, une résolution d'assembly standard est effectuée.If assemblyResolver is not supplied, standard assembly resolution is performed.

Attention   Ne passez pas de méthodes provenant d’appelants inconnus ou non fiables.Caution Do not pass methods from unknown or untrusted callers. Vous risqueriez d'élever les privilèges du code malveillant.Doing so could result in elevation of privilege for malicious code. Utilisez uniquement les méthodes que vous fournissez ou avec lesquelles vous êtes familiarisé.Use only methods that you provide or that you are familiar with.

typeResolver
Func<Assembly,String,Boolean,Type>

Méthode qui trouve et retourne le type spécifié par typeName à partir de l'assembly retourné par assemblyResolver ou par la résolution d'assembly standard.A method that locates and returns the type that is specified by typeName from the assembly that is returned by assemblyResolver or by standard assembly resolution. Si aucun assembly n'est fourni, la méthode peut en fournir un.If no assembly is provided, the method can provide one. La méthode prend également un paramètre qui spécifie s'il faut exécuter une recherche non sensible à la casse ; false est passé à ce paramètre.The method also takes a parameter that specifies whether to perform a case-insensitive search; false is passed to that parameter.

Attention   Ne passez pas de méthodes provenant d’appelants inconnus ou non fiables.Caution Do not pass methods from unknown or untrusted callers.

throwOnError
Boolean

true pour lever une exception si le type est introuvable ; false pour retourner null.true to throw an exception if the type cannot be found; false to return null. false supprime également d'autres conditions d'exception, mais pas toutes.Specifying false also suppresses some other exception conditions, but not all of them. Consultez la section Exceptions.See the Exceptions section.

Retours

Type portant le nom spécifié.The type with the specified name. Si le type est introuvable, le paramètre throwOnError spécifie si null est retourné ou bien une exception est levée.If the type is not found, the throwOnError parameter specifies whether null is returned or an exception is thrown. Dans certains cas, une exception est levée indépendamment de la valeur de throwOnError.In some cases, an exception is thrown regardless of the value of throwOnError. Consultez la section Exceptions.See the Exceptions section.

Exceptions

typeName a la valeur null.typeName is null.

Un initialiseur de classe est appelé et lève une exception.A class initializer is invoked and throws an exception.

throwOnError a la valeur true et le type est introuvable.throwOnError is true and the type is not found.

-ou--or- throwOnError a la valeur true et typeName contient des caractères non valides, tels qu’une tabulation incorporée.throwOnError is true and typeName contains invalid characters, such as an embedded tab. -ou--or- throwOnError a la valeur true et typeName est une chaîne vide.throwOnError is true and typeName is an empty string.

-ou--or- throwOnError a la valeur true et typeName représente un type de tableau avec une taille non valide.throwOnError is true and typeName represents an array type with an invalid size.

-ou--or- typeName représente un tableau de TypedReference.typeName represents an array of TypedReference.

Une erreur se produit quand typeName est analysé dans un nom de type et un nom d’assembly (par exemple, quand le nom de type simple inclut un caractère spécial sans séquence d’échappement).An error occurs when typeName is parsed into a type name and an assembly name (for example, when the simple type name includes an unescaped special character).

-ou--or- throwOnError a la valeur true et typeName contient une syntaxe non valide (par exemple, « MyType[,*,] »).throwOnError is true and typeName contains invalid syntax (for example, "MyType[,*,]").

-ou--or- 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.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

-ou--or- typeName représente un type générique qui a un nombre incorrect d’arguments de type.typeName represents a generic type that has an incorrect number of type arguments.

-ou--or- 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.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

throwOnError a la valeur true et l’assembly ou l’une de ses dépendances est introuvable.throwOnError is true and the assembly or one of its dependencies was not found.

-ou--or- typeName contient un nom d’assembly non valide.typeName contains an invalid assembly name.

-ou--or- typeName est un nom d’assembly valide sans nom de type.typeName is a valid assembly name without a type name.

L’assembly ou une de ses dépendances a été trouvé, mais n’a pas pu être chargé.The assembly or one of its dependencies was found, but could not be loaded.

L’assembly ou une de ses dépendances n’est pas valide.The assembly or one of its dependencies is not valid.

-ou--or-

L’assembly a été compilé avec une version du Common Language Runtime postérieure à la version actuellement chargée.The assembly was compiled with a later version of the common language runtime than the version that is currently loaded.

Remarques

Les scénarios d’utilisation de cette méthode et les détails sur les paramètres assemblyResolver et typeResolver se trouvent dans la surcharge de méthode GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean).Usage scenarios for this method and details about the assemblyResolver and typeResolver parameters can be found in the GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) method overload.

L’appel de cette surcharge de méthode est identique à l’appel de la surcharge de méthode GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) et à la spécification d' false pour le paramètre ignoreCase.Calling this method overload is the same as calling the GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) method overload and specifying false for the ignoreCase parameter.

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean)

Obtient le type portant le nom spécifié, en indiquant s'il faut effectuer une recherche qui respecte la casse et si une exception doit être levée si le type est introuvable, et éventuellement, en fournissant des méthodes personnalisées qui permettent de résoudre l'assembly et le type.Gets the type with the specified name, specifying whether to perform a case-sensitive search and whether to throw an exception if the type is not found, and optionally providing custom methods to resolve the assembly and the type.

public:
 static Type ^ GetType(System::String ^ typeName, Func<System::Reflection::AssemblyName ^, System::Reflection::Assembly ^> ^ assemblyResolver, Func<System::Reflection::Assembly ^, System::String ^, bool, Type ^> ^ typeResolver, bool throwOnError, bool ignoreCase);
public static Type GetType (string typeName, Func<System.Reflection.AssemblyName,System.Reflection.Assembly> assemblyResolver, Func<System.Reflection.Assembly,string,bool,Type> typeResolver, bool throwOnError, bool ignoreCase);
static member GetType : string * Func<System.Reflection.AssemblyName, System.Reflection.Assembly> * Func<System.Reflection.Assembly, string, bool, Type> * bool * bool -> Type
Public Shared Function GetType (typeName As String, assemblyResolver As Func(Of AssemblyName, Assembly), typeResolver As Func(Of Assembly, String, Boolean, Type), throwOnError As Boolean, ignoreCase As Boolean) As Type

Paramètres

typeName
String

Nom du type à obtenir.The name of the type to get. Si le paramètre typeResolver est fourni, le nom de type peut être n'importe quelle chaîne pouvant être résolue par typeResolver.If the typeResolver parameter is provided, the type name can be any string that typeResolver is capable of resolving. Si le paramètre assemblyResolver est fourni ou si la résolution de type standard est utilisée, typeName doit être un nom d'assembly complet (consultez AssemblyQualifiedName), à moins que le type ne se trouve dans l'assembly en cours d'exécution ou dans Mscorlib.dll, cas dans lequel il suffit de fournir le nom de type qualifié par son espace de noms.If the assemblyResolver parameter is provided or if standard type resolution is used, typeName must be an assembly-qualified name (see AssemblyQualifiedName), unless the type is in the currently executing assembly or in Mscorlib.dll, in which case it is sufficient to supply the type name qualified by its namespace.

assemblyResolver
Func<AssemblyName,Assembly>

Méthode qui trouve et retourne l'assembly spécifié dans typeName.A method that locates and returns the assembly that is specified in typeName. Le nom de l'assembly est passé à assemblyResolver en tant qu'objet AssemblyName.The assembly name is passed to assemblyResolver as an AssemblyName object. Si typeName ne contient pas le nom d'un assembly, assemblyResolver n'est pas appelé.If typeName does not contain the name of an assembly, assemblyResolver is not called. Si assemblyResolver n'est pas fourni, une résolution d'assembly standard est effectuée.If assemblyResolver is not supplied, standard assembly resolution is performed.

Attention   Ne passez pas de méthodes provenant d’appelants inconnus ou non fiables.Caution Do not pass methods from unknown or untrusted callers. Vous risqueriez d'élever les privilèges du code malveillant.Doing so could result in elevation of privilege for malicious code. Utilisez uniquement les méthodes que vous fournissez ou avec lesquelles vous êtes familiarisé.Use only methods that you provide or that you are familiar with.

typeResolver
Func<Assembly,String,Boolean,Type>

Méthode qui trouve et retourne le type spécifié par typeName à partir de l'assembly retourné par assemblyResolver ou par la résolution d'assembly standard.A method that locates and returns the type that is specified by typeName from the assembly that is returned by assemblyResolver or by standard assembly resolution. Si aucun assembly n'est fourni, la méthode peut en fournir un.If no assembly is provided, the method can provide one. La méthode prend également un paramètre qui spécifie s'il faut exécuter une recherche non sensible à la casse ; la valeur de ignoreCase est passée à ce paramètre.The method also takes a parameter that specifies whether to perform a case-insensitive search; the value of ignoreCase is passed to that parameter.

Attention   Ne passez pas de méthodes provenant d’appelants inconnus ou non fiables.Caution Do not pass methods from unknown or untrusted callers.

throwOnError
Boolean

true pour lever une exception si le type est introuvable ; false pour retourner null.true to throw an exception if the type cannot be found; false to return null. false supprime également d'autres conditions d'exception, mais pas toutes.Specifying false also suppresses some other exception conditions, but not all of them. Consultez la section Exceptions.See the Exceptions section.

ignoreCase
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.true to perform a case-insensitive search for typeName, false to perform a case-sensitive search for typeName.

Retours

Type portant le nom spécifié.The type with the specified name. Si le type est introuvable, le paramètre throwOnError spécifie si null est retourné ou bien une exception est levée.If the type is not found, the throwOnError parameter specifies whether null is returned or an exception is thrown. Dans certains cas, une exception est levée indépendamment de la valeur de throwOnError.In some cases, an exception is thrown regardless of the value of throwOnError. Consultez la section Exceptions.See the Exceptions section.

Exceptions

typeName a la valeur null.typeName is null.

Un initialiseur de classe est appelé et lève une exception.A class initializer is invoked and throws an exception.

throwOnError a la valeur true et le type est introuvable.throwOnError is true and the type is not found.

-ou--or- throwOnError a la valeur true et typeName contient des caractères non valides, tels qu’une tabulation incorporée.throwOnError is true and typeName contains invalid characters, such as an embedded tab. -ou--or- throwOnError a la valeur true et typeName est une chaîne vide.throwOnError is true and typeName is an empty string.

-ou--or- throwOnError a la valeur true et typeName représente un type de tableau avec une taille non valide.throwOnError is true and typeName represents an array type with an invalid size.

-ou--or- typeName représente un tableau de TypedReference.typeName represents an array of TypedReference.

Une erreur se produit quand typeName est analysé dans un nom de type et un nom d’assembly (par exemple, quand le nom de type simple inclut un caractère spécial sans séquence d’échappement).An error occurs when typeName is parsed into a type name and an assembly name (for example, when the simple type name includes an unescaped special character).

-ou--or- throwOnError a la valeur true et typeName contient une syntaxe non valide (par exemple, « MyType[,*,] »).throwOnError is true and typeName contains invalid syntax (for example, "MyType[,*,]").

-ou--or- 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.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

-ou--or- typeName représente un type générique qui a un nombre incorrect d’arguments de type.typeName represents a generic type that has an incorrect number of type arguments.

-ou--or- 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.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

throwOnError a la valeur true et l’assembly ou l’une de ses dépendances est introuvable.throwOnError is true and the assembly or one of its dependencies was not found.

L’assembly ou une de ses dépendances a été trouvé, mais n’a pas pu être chargé.The assembly or one of its dependencies was found, but could not be loaded.

-ou--or- typeName contient un nom d’assembly non valide.typeName contains an invalid assembly name.

-ou--or- typeName est un nom d’assembly valide sans nom de type.typeName is a valid assembly name without a type name.

L’assembly ou une de ses dépendances n’est pas valide.The assembly or one of its dependencies is not valid.

-ou--or-

L’assembly a été compilé avec une version du Common Language Runtime postérieure à la version actuellement chargée.The assembly was compiled with a later version of the common language runtime than the version that is currently loaded.

Remarques

Utilisez cette surcharge de méthode et ses surcharges associées (GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) et GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean)) pour remplacer l’implémentation par défaut de la méthode GetType par des implémentations plus flexibles.Use this method overload and its associated overloads (GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) and GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean)) to replace the default implementation of the GetType method with more flexible implementations. En fournissant vos propres méthodes qui résolvent les noms de types et les noms des assemblys qui les contiennent, vous pouvez effectuer les opérations suivantes :By providing your own methods that resolve type names and the names of the assemblies that contain them, you can do the following:

  • Contrôler la version d’un assembly à partir de laquelle un type est chargé.Control which version of an assembly a type is loaded from.

  • Fournissez un autre emplacement pour rechercher un nom de type qui n’inclut pas de nom d’assembly.Provide another place to look for a type name that does not include an assembly name.

  • Charger les assemblys à l’aide de noms d’assemblys partiels.Load assemblies using partial assembly names.

  • Retourne les sous-classes de System.Type qui ne sont pas créées par le common language runtime (CLR).Return subclasses of System.Type that are not created by the common language runtime (CLR).

Par exemple, dans la sérialisation avec tolérance de version, cette méthode vous permet de rechercher un assembly « adapté » à l’aide d’un nom partiel.For example, in version-tolerant serialization this method enables you to search for a "best fit" assembly by using a partial name. D’autres surcharges de la méthode GetType requièrent un nom de type qualifié d’assembly, qui comprend le numéro de version.Other overloads of the GetType method require an assembly-qualified type name, which includes the version number.

D’autres implémentations du système de type devront peut-être retourner des sous-classes de System.Type qui ne sont pas créées par le CLR ; tous les types retournés par d’autres surcharges de la méthode GetType sont des types au moment de l’exécution.Alternate implementations of the type system may need to return subclasses of System.Type that are not created by the CLR; all types that are returned by other overloads of the GetType method are runtime types.

Remarques sur l’utilisationUsage Notes

Cette surcharge de méthode et ses surcharges associées analysent typeName dans le nom d’un type et le nom d’un assembly, puis résolvent les noms.This method overload and its associated overloads parse typeName into the name of a type and the name of an assembly, and then resolve the names. La résolution du nom de l’assembly se produit avant la résolution du nom de type, car un nom de type doit être résolu dans le contexte d’un assembly.Resolution of the assembly name occurs before resolution of the type name, because a type name must be resolved in the context of an assembly.

Notes

Si vous n’êtes pas familiarisé avec le concept de noms de types qualifiés d’assembly, consultez la propriété AssemblyQualifiedName.If you are unfamiliar with the concept of assembly-qualified type names, see the AssemblyQualifiedName property.

Si typeName n’est pas un nom qualifié d’assembly, la résolution de l’assembly est ignorée.If typeName is not an assembly-qualified name, assembly resolution is skipped. Les noms de types non qualifiés peuvent être résolus dans le contexte de mscorlib. dll ou de l’assembly en cours d’exécution, ou vous pouvez éventuellement fournir un assembly dans le paramètre typeResolver.Unqualified type names can be resolved in the context of Mscorlib.dll or the currently executing assembly, or you can optionally provide an assembly in the typeResolver parameter. Les effets de l’inclusion ou de l’omission du nom de l’assembly pour différents types de résolution de noms s’affichent sous la forme d’un tableau dans la section résolution de noms mixtes .The effects of including or omitting the assembly name for different kinds of name resolution are displayed as a table in the Mixed Name Resolution section.

Remarques sur l’utilisation générale :General usage notes:

  • Ne transmettez pas de méthodes à assemblyResolver ou typeResolver si elles proviennent d’appelants inconnus ou non approuvés.Do not pass methods to assemblyResolver or typeResolver if they come from unknown or untrusted callers. Utilisez uniquement les méthodes que vous fournissez ou avec lesquelles vous êtes familiarisé.Use only methods that you provide or that you are familiar with.

    Attention

    L’utilisation de méthodes provenant d’appelants inconnus ou non approuvés peut entraîner une élévation de privilèges pour du code malveillant.Using methods from unknown or untrusted callers could result in elevation of privilege for malicious code.

  • Si vous omettez les paramètres assemblyResolver et/ou typeResolver, la valeur du paramètre throwOnError est passée aux méthodes qui effectuent la résolution par défaut.If you omit the assemblyResolver and/or typeResolver parameters, the value of the throwOnError parameter is passed to the methods that perform the default resolution.

  • Si throwOnError est true, cette méthode lève une TypeLoadException quand typeResolver retourne null, et une FileNotFoundException lorsque assemblyResolver retourne null.If throwOnError is true, this method throws a TypeLoadException when typeResolver returns null, and a FileNotFoundException when assemblyResolver returns null.

  • Cette méthode n’intercepte pas les exceptions levées par assemblyResolver et typeResolver.This method does not catch exceptions thrown by assemblyResolver and typeResolver. Vous êtes responsable de toutes les exceptions levées par les méthodes de résolution.You are responsible for any exceptions that are thrown by the resolver methods.

Résoudre des assemblysResolving Assemblies

La méthode assemblyResolver reçoit un objet AssemblyName, qui est généré en analysant le nom de l’assembly de chaîne inclus dans typeName.The assemblyResolver method receives an AssemblyName object, which is produced by parsing the string assembly name that is included in typeName. Si typeName ne contient pas de nom d’assembly, assemblyResolver n’est pas appelé et null est passé à typeResolver.If typeName does not contain an assembly name, assemblyResolver is not called and null is passed to typeResolver.

Si assemblyResolver n’est pas fourni, la détection d’assembly standard est utilisée pour localiser l’assembly.If assemblyResolver is not supplied, standard assembly probing is used to locate the assembly. Si assemblyResolver est fourni, la méthode GetType n’effectue pas de détection standard ; dans ce cas, vous devez vous assurer que votre assemblyResolver peut gérer tous les assemblys que vous lui transmettez.If assemblyResolver is provided, the GetType method does not do standard probing; in that case you must ensure that your assemblyResolver can handle all the assemblies you pass to it.

La méthode assemblyResolver doit retourner null si l’assembly ne peut pas être résolu.The assemblyResolver method should return null if the assembly cannot be resolved. Si assemblyResolver retourne null, typeResolver n’est pas appelé et aucun traitement supplémentaire n’est effectué. en outre, si throwOnError est true, une FileNotFoundException est levée.If assemblyResolver returns null, typeResolver is not called and no further processing occurs; additionally, if throwOnError is true, a FileNotFoundException is thrown.

Si le AssemblyName qui est passé à assemblyResolver est un nom partiel, une ou plusieurs de ses parties sont null.If the AssemblyName that is passed to assemblyResolver is a partial name, one or more of its parts are null. Par exemple, s’il n’a pas de version, la propriété Version est null.For example, if it has no version, the Version property is null. Si la propriété Version, la propriété CultureInfo et la méthode GetPublicKeyToken retournent toutes null, seul le nom simple de l’assembly a été fourni.If the Version property, the CultureInfo property, and the GetPublicKeyToken method all return null, then only the simple name of the assembly was supplied. La méthode assemblyResolver peut utiliser ou ignorer toutes les parties du nom de l’assembly.The assemblyResolver method can use or ignore all parts of the assembly name.

Les effets des différentes options de résolution d’assembly s’affichent sous la forme d’un tableau dans la section résolution de noms mixtes , pour les noms de type simple et qualifié d’assembly.The effects of different assembly resolution options are displayed as a table in the Mixed Name Resolution section, for simple and assembly-qualified type names.

Résolution des typesResolving Types

Si typeName ne spécifie pas de nom d’assembly, typeResolver est toujours appelé.If typeName does not specify an assembly name, typeResolver is always called. Si typeName spécifie un nom d’assembly, typeResolver est appelé uniquement lorsque le nom de l’assembly est résolu avec succès.If typeName specifies an assembly name, typeResolver is called only when the assembly name is successfully resolved. Si assemblyResolver ou la détection d’assembly standard retourne null, typeResolver n’est pas appelé.If assemblyResolver or standard assembly probing returns null, typeResolver is not called.

La méthode typeResolver reçoit trois arguments :The typeResolver method receives three arguments:

  • Assembly à rechercher ou null si typeName ne contient pas de nom d’assembly.The assembly to search or null if typeName does not contain an assembly name.

  • Nom simple du type.The simple name of the type. Dans le cas d’un type imbriqué, il s’agit du type contenant le plus à l’extérieur.In the case of a nested type, this is the outermost containing type. Dans le cas d’un type générique, il s’agit du nom simple du type générique.In the case of a generic type, this is the simple name of the generic type.

  • Valeur booléenne true si la casse des noms de types doit être ignorée.A Boolean value that is true if the case of type names is to be ignored.

L’implémentation détermine la façon dont ces arguments sont utilisés.The implementation determines the way these arguments are used. La méthode typeResolver doit retourner null si elle ne peut pas résoudre le type.The typeResolver method should return null if it cannot resolve the type. Si typeResolver retourne null et throwOnError est true, cette surcharge de GetType lève une TypeLoadException.If typeResolver returns null and throwOnError is true, this overload of GetType throws a TypeLoadException.

Les effets des différentes options de résolution de type s’affichent sous la forme d’un tableau dans la section résolution de noms mixtes , pour les noms de type simple et qualifié d’assembly.The effects of different type resolution options are displayed as a table in the Mixed Name Resolution section, for simple and assembly-qualified type names.

Résolution de types imbriquésResolving Nested Types

Si typeName est un type imbriqué, seul le nom du type conteneur le plus à l’extérieur est passé à typeResolver.If typeName is a nested type, only the name of the outermost containing type is passed to typeResolver. Quand typeResolver retourne ce type, la méthode GetNestedType est appelée de manière récursive jusqu’à ce que le type imbriqué le plus profond ait été résolu.When typeResolver returns this type, the GetNestedType method is called recursively until the innermost nested type has been resolved.

Résolution des types génériquesResolving Generic Types

La GetType est appelée de manière récursive pour résoudre les types génériques : tout d’abord pour résoudre le type générique lui-même, puis pour résoudre ses arguments de type.The GetType is called recursively to resolve generic types: First to resolve the generic type itself, and then to resolve its type arguments. Si un argument de type est générique, GetType est appelé de manière récursive pour résoudre ses arguments de type, et ainsi de suite.If a type argument is generic, GetType is called recursively to resolve its type arguments, and so on.

La combinaison des assemblyResolver et des typeResolver que vous fournissez doit être capable de résoudre tous les niveaux de cette récurrence.The combination of assemblyResolver and typeResolver that you provide must be capable of resolving all levels of this recursion. Par exemple, supposons que vous fournissiez un assemblyResolver qui contrôle le chargement de MyAssembly.For example, suppose you supply an assemblyResolver that controls the loading of MyAssembly. Supposons que vous souhaitiez résoudre le Dictionary<string, MyType> de type générique (Dictionary(Of String, MyType) dans Visual Basic).Suppose you want to resolve the generic type Dictionary<string, MyType> (Dictionary(Of String, MyType) in Visual Basic). Vous pouvez passer le nom de type générique suivant :You might pass the following generic type name:

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

Notez que MyType est le seul argument de type qualifié d’assembly.Notice that MyType is the only assembly-qualified type argument. Les noms des classes Dictionary<TKey,TValue> et String ne sont pas qualifiés par assembly.The names of the Dictionary<TKey,TValue> and String classes are not assembly-qualified. Votre typeResolver doit être en mesure de gérer un assembly ou un null, car il recevra null pour Dictionary<TKey,TValue> et String.Your typeResolver must be able handle either an assembly or null, because it will receive null for Dictionary<TKey,TValue> and String. Il peut gérer ce cas en appelant une surcharge de la méthode GetType qui prend une chaîne, car les deux noms de types non qualifiés se trouvent dans mscorlib. dll :It can handle that case by calling an overload of the GetType method that takes a string, because both of the unqualified type names are in Mscorlib.dll:

Type t = Type.GetType(test,
                      (aName) => aName.Name == "MyAssembly" ? 
                          Assembly.LoadFrom(@".\MyPath\v5.0\MyAssembly.dll") : null,
                      (assem, name, ignore) => assem == null ? 
                          Type.GetType(name, false, ignore) : 
                              assem.GetType(name, false, ignore)
                     ); 

La méthode assemblyResolver n’est pas appelée pour le type de dictionnaire et le type de chaîne, car ces noms de types ne sont pas qualifiés par assembly.The assemblyResolver method is not called for the dictionary type and the string type, because those type names are not assembly-qualified.

Supposons à présent qu’au lieu de System.String, le premier type d’argument générique est YourType, à partir de YourAssembly:Now suppose that instead of System.String, the first generic argument type is YourType, from YourAssembly:

"System.Collections.Generic.Dictionary`2[[YourNamespace.YourType, YourAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null], [MyNamespace.MyType, MyAssembly]]"  

Étant donné que cet assembly n’est ni Mscorlib. dll ni l’assembly en cours d’exécution, vous ne pouvez pas résoudre YourType sans un nom qualifié d’assembly.Because this assembly is neither Mscorlib.dll nor the currently executing assembly, you cannot resolve YourType without an assembly-qualified name. Étant donné que votre assemblyResolve sera appelée de manière récursive, elle doit être en mesure de gérer ce cas.Because your assemblyResolve will be called recursively, it must be able to handle this case. Au lieu de retourner des null pour les assemblys autres que MyAssembly, il effectue maintenant un chargement d’assembly à l’aide de l’objet AssemblyName fourni.Instead of returning null for assemblies other than MyAssembly, it now performs an assembly load using the supplied AssemblyName object.

Type t2 = Type.GetType(test,
                       (aName) => aName.Name == "MyAssembly" ? 
                           Assembly.LoadFrom(@".\MyPath\v5.0\MyAssembly.dll") : 
                           Assembly.Load(aName),
                       (assem, name, ignore) => assem == null ? 
                           Type.GetType(name, false, ignore) : 
                               assem.GetType(name, false, ignore), true
                      ); 

Retour aux Remarques d’utilisation.Back to Usage Notes.

Résolution de noms de types avec des caractères spéciauxResolving Type Names with Special Characters

Certains caractères ont des significations spéciales dans les noms qualifiés d’assembly.Certain characters have special meanings in assembly-qualified names. Si un nom de type simple contient ces caractères, les caractères entraînent des erreurs d’analyse lorsque le nom simple fait partie d’un nom qualifié d’assembly.If a simple type name contains these characters, the characters cause parsing errors when the simple name is part of an assembly-qualified name. Pour éviter les erreurs d’analyse, vous devez placer dans une séquence d’échappement les caractères spéciaux avec une barre oblique inverse avant de pouvoir passer le nom qualifié d’assembly à la méthode GetType.To avoid the parsing errors, you must escape the special characters with a backslash before you can pass the assembly-qualified name to the GetType method. Par exemple, si un type est nommé Strange]Type, le caractère d’échappement doit être ajouté avant le crochet comme suit : Strange\]Type.For example, if a type is named Strange]Type, the escape character must be added ahead of the square bracket as follows: Strange\]Type.

Notes

Les noms avec ces caractères spéciaux ne peuvent pas être créés C#dans Visual Basic ou, mais ils peuvent être créés à l’aide du langage MSIL (Microsoft Intermediate Language) ou en émettant des assemblys dynamiques.Names with such special characters cannot be created in Visual Basic or C#, but can be created by using Microsoft intermediate language (MSIL) or by emitting dynamic assemblies.

Le tableau suivant présente les caractères spéciaux pour les noms de types.The following table shows the special characters for type names.

CaractèreCharacter SignificationMeaning
, (virgule), (comma) Délimiteur pour les noms qualifiés d’assembly.Delimiter for assembly-qualified names.
[] (crochets)[] (square brackets) En tant que paire de suffixes, indique un type tableau ; en tant que paire de délimiteurs, encadre les listes d’arguments génériques et les noms qualifiés d’assembly.As a suffix pair, indicates an array type; as a delimiter pair, encloses generic argument lists and assembly-qualified names.
& (esperluette)& (ampersand) En guise de suffixe, indique qu’un type est un type référence.As a suffix, indicates that a type is a reference type.
* (astérisque)* (asterisk) En guise de suffixe, indique qu’un type est un type pointeur.As a suffix, indicates that a type is a pointer type.
+ (plus)+ (plus) Délimiteur pour les types imbriqués.Delimiter for nested types.
\ (barre oblique inverse)\ (backslash) Caractère d’échappement.Escape character.

Les propriétés telles que AssemblyQualifiedName retourner des chaînes correctement placées dans une séquence d’échappement.Properties such as AssemblyQualifiedName return correctly escaped strings. Vous devez passer les chaînes correctement placées dans une séquence d’échappement à la méthode GetType.You must pass correctly escaped strings to the GetType method. À son tour, la méthode GetType passe correctement les noms échappés à typeResolver et aux méthodes de résolution de type par défaut.In turn, the GetType method passes correctly escaped names to typeResolver and to the default type resolution methods. Si vous devez comparer un nom à un nom sans séquence d’échappement dans typeResolver, vous devez supprimer les caractères d’échappement.If you need to compare a name to an unescaped name in typeResolver, you must remove the escape characters.

Retour aux Remarques d’utilisation.Back to Usage Notes.

Résolution de noms mixtesMixed Name Resolution

Le tableau suivant récapitule les interactions entre assemblyResolver, typeResolveret la résolution de noms par défaut, pour toutes les combinaisons de nom de type et de nom d’assembly dans typeName:The following table summarizes the interactions between assemblyResolver, typeResolver, and default name resolution, for all combinations of type name and assembly name in typeName:

Contenu du nom de typeContents of type name Méthode du programme de résolution d’assemblyAssembly resolver method Méthode du programme de résolution de typeType resolver method RésultatResult
type, assemblytype, assembly nullnull nullnull Équivalent à l’appel de la surcharge de méthode Type.GetType(String, Boolean, Boolean).Equivalent to calling the Type.GetType(String, Boolean, Boolean) method overload.
type, assemblytype, assembly fournitprovided nullnull assemblyResolver retourne l’assembly ou retourne null s’il ne peut pas résoudre l’assembly.assemblyResolver returns the assembly or returns null if it cannot resolve the assembly. Si l’assembly est résolu, la surcharge de méthode Assembly.GetType(String, Boolean, Boolean) est utilisée pour charger le type à partir de l’assembly ; dans le cas contraire, il n’y a aucune tentative de résolution du type.If the assembly is resolved, the Assembly.GetType(String, Boolean, Boolean) method overload is used to load the type from the assembly; otherwise, there is no attempt to resolve the type.
type, assemblytype, assembly nullnull fournitprovided Équivalent à la conversion du nom de l’assembly en objet AssemblyName et à l’appel de la surcharge de méthode Assembly.Load(AssemblyName) pour la récupération de l’assembly.Equivalent to converting the assembly name to an AssemblyName object and calling the Assembly.Load(AssemblyName) method overload to get the assembly. Si l’assembly est résolu, il est passé à typeResolver; dans le cas contraire, typeResolver n’est pas appelé et aucune autre tentative de résolution du type.If the assembly is resolved, it is passed to typeResolver; otherwise, typeResolver is not called and there is no further attempt to resolve the type.
type, assemblytype, assembly fournitprovided fournitprovided assemblyResolver retourne l’assembly ou retourne null s’il ne peut pas résoudre l’assembly.assemblyResolver returns the assembly or returns null if it cannot resolve the assembly. Si l’assembly est résolu, il est passé à typeResolver; dans le cas contraire, typeResolver n’est pas appelé et aucune autre tentative de résolution du type.If the assembly is resolved, it is passed to typeResolver; otherwise, typeResolver is not called and there is no further attempt to resolve the type.
typetype NULL, fourninull, provided nullnull Équivalent à l’appel de la surcharge de méthode Type.GetType(String, Boolean, Boolean).Equivalent to calling the Type.GetType(String, Boolean, Boolean) method overload. Étant donné que le nom de l’assembly n’est pas fourni, seul mscorlib. dll et l’assembly en cours d’exécution sont recherchés.Because the assembly name is not provided, only Mscorlib.dll and the currently executing assembly are searched. Si assemblyResolver est fourni, il est ignoré.If assemblyResolver is provided, it is ignored.
typetype NULL, fourninull, provided fournitprovided typeResolver est appelé, et null est passé pour l’assembly.typeResolver is called, and null is passed for the assembly. typeResolver pouvez fournir un type à partir de n’importe quel assembly, y compris les assemblys qu’il charge à cet effet.typeResolver can provide a type from any assembly, including assemblies it loads for the purpose. Si assemblyResolver est fourni, il est ignoré.If assemblyResolver is provided, it is ignored.
assemblyassembly NULL, fourninull, provided NULL, fourninull, provided Une FileLoadException est levée, car le nom de l’assembly est analysé comme s’il s’agissait d’un nom de type qualifié d’assembly.A FileLoadException is thrown, because the assembly name is parsed as if it were an assembly-qualified type name. Cela aboutit à un nom d’assembly non valide.This results in an invalid assembly name.

Retour à : Remarques sur l’utilisation, résolution des assemblys, résolution des types.Back to: Usage Notes, Resolving Assemblies, Resolving Types.

S’applique à