Type.GetType Méthode

Définition

Obtient un objet Type qui représente le type spécifié.

Surcharges

GetType()

Obtient le Type actuel.

GetType(String)

Obtient le Type avec le nom spécifié, effectuant une recherche qui respecte la casse.

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.

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.

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.

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.

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.

GetType()

Obtient le Type actuel.

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

Retours

Type

Type actuel.

Implémente

Exceptions

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

Voir aussi

S’applique à

GetType(String)

Obtient le Type avec le nom spécifié, effectuant une recherche qui respecte la casse.

public:
 static Type ^ GetType(System::String ^ typeName);
public static Type GetType (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. Consultez AssemblyQualifiedName. Si le type se trouve dans l’assembly en cours d’exécution ou dans mscorlib.dll/System.Private.CoreLib.dll, il suffit de fournir le nom du type qualifié par son espace de noms.

Retours

Type

Type présentant le nom spécifié, s'il est trouvé ; sinon, null.

Exceptions

typeName a la valeur null.

Un initialiseur de classe est appelé et lève une 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.

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

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

typeName représente un tableau de TypedReference.

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

remarque : dans .net pour les applications du windows Store Windows ou la bibliothèque de classes Portable, interceptez l’exception de la classe de base,, à la IOException place.

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

  • ou -

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

Exemples

L’exemple suivant récupère le type de System.Int32 et utilise cet objet de type pour afficher la FullName propriété de 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 GetType méthode pour obtenir un Type objet pour un type dans un autre assembly si vous connaissez son nom qualifié d’assembly, qui peut être obtenu à partir de AssemblyQualifiedName . GetType provoque le chargement de l’assembly spécifié dans typeName . Vous pouvez également charger un assembly à l’aide de la Assembly.Load méthode, puis utiliser la Assembly.GetType Assembly.GetTypes méthode ou pour récupérer des Type objets. Si un type se trouve dans un assembly connu de votre programme au moment de la compilation, il est plus efficace d’utiliser typeof en C# ou l' GetType opérateur dans Visual Basic.

Notes

Si typeName est introuvable, l’appel à la GetType(String) méthode retourne null . Elle ne lève pas d’exception. Pour contrôler si une exception est levée, appelez une surcharge de la GetType méthode qui a un throwOnError paramètre.

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

Pour utiliser GetType sur un module dynamique, abonnez-vous à l' AppDomain.AssemblyResolve événement et appelez GetType avant d’enregistrer. Dans le cas contraire, vous obtiendrez deux copies de l’assembly en mémoire.

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

Type de membre statique Non statique
Constructeur Non Non
Champ Non Oui. Un champ est toujours masqué par nom-et-signature.
Événement Non 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é. La réflexion traite les propriétés comme étant masquées-par-nom-et-signature. Voir la remarque 2 ci-dessous.
Méthode Non Oui. Une méthode (à la fois virtuelles et non virtuelles) peut être masquée ou masquée-par-nom-et-signature.
Type imbriqué Non Non
Propriété Non applicable La règle de système de type commun est que l’héritage est le même que celui des méthodes qui implémentent la propriété. La réflexion traite les propriétés comme étant masquées-par-nom-et-signature. Voir la remarque 2 ci-dessous.
  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. Il s’agit d’une comparaison binaire.

  2. Pour la réflexion, les propriétés et les événements sont masqués par nom et 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.

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

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.

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. Consultez 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 mscorlib.dll/System.Private.CoreLib.dll, dans cet ordre. Si typeName est qualifié complet avec le nom d’assembly partiel ou complet, cette méthode recherche dans l’assembly spécifié. Si l’assembly a un nom fort, un nom d’assembly complet est requis.

La AssemblyQualifiedName propriété retourne un nom de type qualifié complet, y compris les types imbriqués, le nom de l’assembly et les arguments de type générique. 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.

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. Par exemple, « ProcessorArchitecture = MSIL ». Toutefois, il n’est pas inclus dans la chaîne retournée par la AssemblyQualifiedName propriété, pour des raisons de compatibilité. Vous pouvez également charger des types en créant un AssemblyName objet et en le passant à une surcharge appropriée de la Load méthode. Vous pouvez ensuite utiliser la Assembly.GetType méthode pour charger des types à partir de l’assembly. Voir aussi AssemblyName.ProcessorArchitecture.

Délimiteur Signification
Barre oblique inverse (\) Caractère d’échappement.
Tops (') 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.
Crochets ([]) Placez une liste d’arguments de type générique, pour un type générique construit ; dans une liste d’arguments de type, placez un type qualifié d’assembly.
Virgule (,) Précède le nom de l’assembly.
Point (.) Indique des identificateurs d’espace de noms.
Signe plus (+) Précède une classe imbriquée.

Par exemple, le nom qualifié complet d’une classe peut se présenter comme suit :

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. La réflexion émet cette chaîne comme suit :

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

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

Ce nom qualifié peut être persistant et utilisé ultérieurement pour charger Type . Pour rechercher et charger un Type , utilisez GetType soit avec le nom de type uniquement, soit avec le nom de type qualifié d’assembly. GetType avec le nom de type, recherche uniquement Type dans l’assembly de l’appelant, puis dans l’assembly système. GetType avec le nom de type qualifié d’assembly, recherche le Type dans n’importe quel 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. Pour récupérer le nom du type sans ces caractères de fin, utilisez t.GetElementType().ToString() , où t est le type.

Les espaces sont pertinents dans tous les composants de nom de type, à l’exception du nom de l’assembly. 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.

Le nom d’un type générique se termine par un accent ( ` ) suivi de chiffres représentant le nombre d’arguments de type générique. 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. par exemple, la réflexion retourne les noms tronqués Tuple`1 et Tuple`2 à partir des méthodes génériques Tuple(Of T) et Tuple(Of T0, T1) de Visual Basic, ou Tuple<T> et Tuple<T0, T1> en Visual C#.

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

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

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

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

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

Notes

en C#, C++ et Visual Basic vous pouvez également récupérer des types nullable à l’aide d’opérateurs de type. Par exemple, le Boolean type Nullable est retourné par typeof(Nullable<bool>) en C#, par Nullable<Boolean>::typeid en C++ et par GetType(Nullable(Of Boolean)) dans Visual Basic.

Le tableau suivant montre la syntaxe que vous utilisez avec GetType pour différents types.

Pour accéder Utilisez
Valeur null Int32 Type.GetType("System.Nullable`1[System.Int32]")
Pointeur non managé vers MyType Type.GetType("MyType*")
Pointeur non managé vers un pointeur vers MyType Type.GetType("MyType**")
Pointeur managé ou référence à MyType Type.GetType("MyType&"). Notez que contrairement aux pointeurs, les références sont limitées à un niveau.
Une classe parente et une classe imbriquée Type.GetType("MyParentClass+MyNestedClass")
Tableau unidimensionnel avec une limite inférieure de 0 Type.GetType("MyType[]")
Tableau unidimensionnel avec une limite inférieure inconnue Type.GetType("MyType[*]")
Tableau à n dimensions Virgule (,) à l’intérieur des crochets un total de n-1 fois. Par exemple, System.Object[,,] représente un tableau à trois dimensions Object .
Tableau de tableaux unidimensionnels Type.GetType("MyType[][]")
Tableau rectangulaire à deux dimensions avec limites inférieures inconnues Type.GetType("MyType[,]")
Type générique avec un argument de type Type.GetType("MyGenericType`1[MyType]")
Type générique avec deux arguments de type Type.GetType("MyGenericType`2[MyType,AnotherType]")
Type générique avec deux arguments de type qualifiés par un assembly Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
Type générique qualifié d’assembly avec un argument de type qualifié d’assembly 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 type Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")

Voir aussi

S’applique à

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.

public:
 static Type ^ GetType(System::String ^ typeName, bool throwOnError);
public static Type GetType (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. Consultez AssemblyQualifiedName. Si le type se trouve dans l’assembly en cours d’exécution ou dans mscorlib.dll/System.Private.CoreLib.dll, il suffit de fournir le nom du type qualifié par son espace de noms.

throwOnError
Boolean

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

Retours

Type

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

Exceptions

typeName a la valeur null.

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

throwOnError a la valeur true et le type est introuvable.

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

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

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

  • ou - typeName représente un tableau de TypedReference.

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

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

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

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

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

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

remarque : dans .net pour les applications du windows Store Windows ou la bibliothèque de classes Portable, interceptez l’exception de la classe de base,, à la IOException place.

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

  • ou -

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

Exemples

L’exemple suivant récupère le type de System.Int32 et utilise cet objet de type pour afficher la FullName propriété de System.Int32 . Si un objet de type fait référence à un assembly qui n’existe pas, cet exemple lève une 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 GetType méthode pour obtenir un Type objet pour un type dans un autre assembly si vous connaissez son nom qualifié d’assembly, qui peut être obtenu à partir de AssemblyQualifiedName . GetType provoque le chargement de l’assembly spécifié dans typeName . Vous pouvez également charger un assembly à l’aide de la Assembly.Load méthode, puis utiliser la Assembly.GetType Assembly.GetTypes méthode ou pour récupérer des Type objets. Si un type se trouve dans un assembly connu de votre programme au moment de la compilation, il est plus efficace d’utiliser typeof en C# ou l' GetType opérateur dans Visual Basic.

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

Pour utiliser GetType sur un module dynamique, abonnez-vous à l' AppDomain.AssemblyResolve événement et appelez GetType avant d’enregistrer. Dans le cas contraire, vous obtiendrez deux copies de l’assembly en mémoire.

Le throwOnError paramètre 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. Certaines exceptions sont levées indépendamment de la valeur de 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 .

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

Type de membre statique Non statique
Constructeur Non Non
Champ Non Oui. Un champ est toujours masqué par nom-et-signature.
Événement Non 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é. La réflexion traite les propriétés comme étant masquées-par-nom-et-signature. Voir la remarque 2 ci-dessous.
Méthode Non Oui. Une méthode (à la fois virtuelles et non virtuelles) peut être masquée ou masquée-par-nom-et-signature.
Type imbriqué Non Non
Propriété Non applicable La règle de système de type commun est que l’héritage est le même que celui des méthodes qui implémentent la propriété. La réflexion traite les propriétés comme étant masquées-par-nom-et-signature. Voir la remarque 2 ci-dessous.
  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. Il s’agit d’une comparaison binaire.

  2. Pour la réflexion, les propriétés et les événements sont masqués par nom et 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.

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

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.

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. Consultez 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 mscorlib.dll/System.Private.CoreLib.dll, dans cet ordre. Si typeName est qualifié complet avec le nom d’assembly partiel ou complet, cette méthode recherche dans l’assembly spécifié. Si l’assembly a un nom fort, un nom d’assembly complet est requis.

La AssemblyQualifiedName propriété retourne un nom de type qualifié complet, y compris les types imbriqués, le nom de l’assembly et les arguments génériques. 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.

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. Par exemple, « ProcessorArchitecture = MSIL ». Toutefois, il n’est pas inclus dans la chaîne retournée par la AssemblyQualifiedName propriété, pour des raisons de compatibilité. Vous pouvez également charger des types en créant un AssemblyName objet et en le passant à une surcharge appropriée de la Load méthode. Vous pouvez ensuite utiliser la Assembly.GetType méthode pour charger des types à partir de l’assembly. Voir aussi AssemblyName.ProcessorArchitecture.

Délimiteur Signification
Barre oblique inverse (\) Caractère d’échappement.
Tops (') 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.
Crochets ([]) Placez une liste d’arguments de type générique, pour un type générique construit ; dans une liste d’arguments de type, placez un type qualifié d’assembly.
Virgule (,) Précède le nom de l’assembly.
Point (.) Indique des identificateurs d’espace de noms.
Signe plus (+) Précède une classe imbriquée.

Par exemple, le nom qualifié complet d’une classe peut se présenter comme suit :

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. La réflexion émet cette chaîne comme suit :

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

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

Ce nom qualifié peut être persistant et utilisé ultérieurement pour charger Type . Pour rechercher et charger un Type , utilisez GetType soit avec le nom de type uniquement, soit avec le nom de type qualifié d’assembly. GetType avec le nom de type, recherche uniquement Type dans l’assembly de l’appelant, puis dans l’assembly système. GetType avec le nom de type qualifié d’assembly, recherche le Type dans n’importe quel 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. Pour récupérer le nom du type sans ces caractères de fin, utilisez t.GetElementType().ToString() , où t est le type.

Les espaces sont pertinents dans tous les composants de nom de type, à l’exception du nom de l’assembly. 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.

Le nom d’un type générique se termine par un accent ( ` ) suivi de chiffres représentant le nombre d’arguments de type générique. 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. par exemple, la réflexion retourne les noms tronqués Tuple`1 et Tuple`2 à partir des méthodes génériques Tuple(Of T) et Tuple(Of T0, T1) de Visual Basic, ou Tuple<T> et Tuple<T0, T1> en Visual C#.

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

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

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

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

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

Notes

en C#, C++ et Visual Basic vous pouvez également récupérer des types nullable à l’aide d’opérateurs de type. Par exemple, le Boolean type Nullable est retourné par typeof(Nullable<bool>) en C#, par Nullable<Boolean>::typeid en C++ et par GetType(Nullable(Of Boolean)) dans Visual Basic.

Le tableau suivant montre la syntaxe que vous utilisez avec GetType pour différents types.

Pour accéder Utilisez
Valeur null Int32 Type.GetType("System.Nullable`1[System.Int32]")
Pointeur non managé vers MyType Type.GetType("MyType*")
Pointeur non managé vers un pointeur vers MyType Type.GetType("MyType**")
Pointeur managé ou référence à MyType Type.GetType("MyType&"). Notez que contrairement aux pointeurs, les références sont limitées à un niveau.
Une classe parente et une classe imbriquée Type.GetType("MyParentClass+MyNestedClass")
Tableau unidimensionnel avec une limite inférieure de 0 Type.GetType("MyArray[]")
Tableau unidimensionnel avec une limite inférieure inconnue Type.GetType("MyArray[*]")
Tableau à n dimensions Virgule (,) à l’intérieur des crochets un total de n-1 fois. Par exemple, System.Object[,,] représente un tableau à trois dimensions Object .
Tableau d’un tableau à deux dimensions Type.GetType("MyArray[][]")
Tableau rectangulaire à deux dimensions avec limites inférieures inconnues Type.GetType("MyArray[,]")
Type générique avec un argument de type Type.GetType("MyGenericType`1[MyType]")
Type générique avec deux arguments de type Type.GetType("MyGenericType`2[MyType,AnotherType]")
Type générique avec deux arguments de type qualifiés par un assembly Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
Type générique qualifié d’assembly avec un argument de type qualifié d’assembly 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 type Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")

Voir aussi

S’applique à

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.

public:
 static Type ^ GetType(System::String ^ typeName, bool throwOnError, bool ignoreCase);
public static Type GetType (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. Consultez AssemblyQualifiedName. Si le type se trouve dans l’assembly en cours d’exécution ou dans mscorlib.dll/System.Private.CoreLib.dll, il suffit de fournir le nom du type qualifié par son espace de noms.

throwOnError
Boolean

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

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.

Retours

Type

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

Exceptions

typeName a la valeur null.

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

throwOnError a la valeur true et le type est introuvable.

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

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

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

  • ou - typeName représente un tableau de TypedReference.

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

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

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

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

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

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

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

  • ou -

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

Remarques

Vous pouvez utiliser la GetType méthode pour obtenir un Type objet pour un type dans un autre assembly si vous connaissez son nom qualifié d’assembly, qui peut être obtenu à partir de AssemblyQualifiedName . GetType provoque le chargement de l’assembly spécifié dans typeName . Vous pouvez également charger un assembly à l’aide de la Assembly.Load méthode, puis utiliser la Assembly.GetType Assembly.GetTypes méthode ou pour récupérer des Type objets. Si un type se trouve dans un assembly connu de votre programme au moment de la compilation, il est plus efficace d’utiliser typeof en C# ou l' GetType opérateur dans Visual Basic.

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

Pour utiliser GetType sur un module dynamique, abonnez-vous à l' AppDomain.AssemblyResolve événement et appelez GetType avant d’enregistrer. Dans le cas contraire, vous obtiendrez deux copies de l’assembly en mémoire.

Le throwOnError paramètre 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. Certaines exceptions sont levées indépendamment de la valeur de 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 .

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

Type de membre statique Non statique
Constructeur Non Non
Champ Non Oui. Un champ est toujours masqué par nom-et-signature.
Événement Non 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é. La réflexion traite les propriétés comme étant masquées-par-nom-et-signature. Voir la remarque 2 ci-dessous.
Méthode Non Oui. Une méthode (à la fois virtuelles et non virtuelles) peut être masquée ou masquée-par-nom-et-signature.
Type imbriqué Non Non
Propriété Non applicable La règle de système de type commun est que l’héritage est le même que celui des méthodes qui implémentent la propriété. La réflexion traite les propriétés comme étant masquées-par-nom-et-signature. Voir la remarque 2 ci-dessous.
  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. Il s’agit d’une comparaison binaire.

  2. Pour la réflexion, les propriétés et les événements sont masqués par nom et 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.

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

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.

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. Consultez 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 mscorlib.dll/System.Private.CoreLib.dll, dans cet ordre. Si typeName est qualifié complet avec le nom d’assembly partiel ou complet, cette méthode recherche dans l’assembly spécifié. Si l’assembly a un nom fort, un nom d’assembly complet est requis.

La AssemblyQualifiedName propriété retourne un nom de type qualifié complet, y compris les types imbriqués, le nom de l’assembly et les arguments de type. Tous les compilateurs qui prennent en charge le common language runtime é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.

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. Par exemple, « ProcessorArchitecture = MSIL ». Toutefois, il n’est pas inclus dans la chaîne retournée par la AssemblyQualifiedName propriété, pour des raisons de compatibilité. Vous pouvez également charger des types en créant un AssemblyName objet et en le passant à une surcharge appropriée de la Load méthode. Vous pouvez ensuite utiliser la Assembly.GetType méthode pour charger des types à partir de l’assembly. Voir aussi AssemblyName.ProcessorArchitecture.

Délimiteur Signification
Barre oblique inverse (\) Caractère d’échappement.
Tops (') 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.
Crochets ([]) Placez une liste d’arguments de type générique, pour un type générique construit ; dans une liste d’arguments de type, placez un type qualifié d’assembly.
Virgule (,) Précède le nom de l’assembly.
Point (.) Indique des identificateurs d’espace de noms.
Signe plus (+) Précède une classe imbriquée.

Par exemple, le nom qualifié complet d’une classe peut se présenter comme suit :

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. La réflexion émet cette chaîne comme suit :

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

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

Ce nom qualifié peut être persistant et utilisé ultérieurement pour charger Type . Pour rechercher et charger un Type , utilisez GetType soit avec le nom de type uniquement, soit avec le nom de type qualifié d’assembly. GetType avec le nom de type, recherche uniquement Type dans l’assembly de l’appelant, puis dans l’assembly système. GetType avec le nom de type qualifié d’assembly, recherche le Type dans n’importe quel 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. Pour récupérer le nom du type sans ces caractères de fin, utilisez t.GetElementType().ToString() , où t est le type.

Les espaces sont pertinents dans tous les composants de nom de type, à l’exception du nom de l’assembly. 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.

Le nom d’un type générique se termine par un accent ( ` ) suivi de chiffres représentant le nombre d’arguments de type générique. 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. par exemple, la réflexion retourne les noms tronqués Tuple`1 et Tuple`2 à partir des méthodes génériques Tuple(Of T) et Tuple(Of T0, T1) de Visual Basic, ou Tuple<T> et Tuple<T0, T1> en Visual C#.

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

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

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

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

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

Notes

en C#, C++ et Visual Basic vous pouvez également récupérer des types nullable à l’aide d’opérateurs de type. Par exemple, le Boolean type Nullable est retourné par typeof(Nullable<bool>) en C#, par Nullable<Boolean>::typeid en C++ et par GetType(Nullable(Of Boolean)) dans Visual Basic.

Le tableau suivant montre la syntaxe que vous utilisez avec GetType pour différents types.

Pour accéder Utilisez
Valeur null Int32 Type.GetType("System.Nullable`1[System.Int32]")
Pointeur non managé vers MyType Type.GetType("MyType*")
Pointeur non managé vers un pointeur vers MyType Type.GetType("MyType**")
Pointeur managé ou référence à MyType Type.GetType("MyType&"). Notez que contrairement aux pointeurs, les références sont limitées à un niveau.
Une classe parente et une classe imbriquée Type.GetType("MyParentClass+MyNestedClass")
Tableau unidimensionnel avec une limite inférieure de 0 Type.GetType("MyArray[]")
Tableau unidimensionnel avec une limite inférieure inconnue Type.GetType("MyArray[*]")
Tableau à n dimensions Virgule (,) à l’intérieur des crochets un total de n-1 fois. Par exemple, System.Object[,,] représente un tableau à trois dimensions Object .
Tableau d’un tableau à deux dimensions Type.GetType("MyArray[][]")
Tableau rectangulaire à deux dimensions avec limites inférieures inconnues Type.GetType("MyArray[,]")
Type générique avec un argument de type Type.GetType("MyGenericType`1[MyType]")
Type générique avec deux arguments de type Type.GetType("MyGenericType`2[MyType,AnotherType]")
Type générique avec deux arguments de type qualifiés par un assembly Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
Type générique qualifié d’assembly avec un argument de type qualifié d’assembly 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 type Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")

Voir aussi

S’applique à

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.

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);
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. Si le paramètre typeResolver est fourni, le nom de type peut être n'importe quelle chaîne pouvant être résolue par typeResolver. 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/System.Private.CoreLib.dll, auquel cas il suffit de fournir le nom de type qualifié par son espace de noms.

assemblyResolver
Func<AssemblyName,Assembly>

Méthode qui trouve et retourne l'assembly spécifié dans typeName. Le nom de l'assembly est passé à assemblyResolver en tant qu'objet AssemblyName. Si typeName ne contient pas le nom d'un assembly, assemblyResolver n'est pas appelé. Si assemblyResolver n'est pas fourni, une résolution d'assembly standard est effectuée.

Attention   Ne passez pas de méthodes provenant d’appelants inconnus ou non fiables. Vous risqueriez d'élever les privilèges du code malveillant. Utilisez uniquement les méthodes que vous fournissez ou avec lesquelles vous êtes familiarisé.

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. Si aucun assembly n'est fourni, la méthode typeResolver peut en fournir un. 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.

Attention   Ne passez pas de méthodes provenant d’appelants inconnus ou non fiables.

Retours

Type

Type portant le nom spécifié, ou null si le type est introuvable.

Exceptions

typeName a la valeur null.

Un initialiseur de classe est appelé et lève une 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).

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

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

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

typeName représente un tableau de TypedReference.

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

  • ou - typeName contient un nom d’assembly non valide.

  • ou - typeName est un nom d’assembly valide sans nom de type.

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

  • ou -

L’assembly a été compilé avec une version du Common Language Runtime postérieure à la version actuellement chargée.

Remarques

Les scénarios d’utilisation de cette méthode et des détails sur les assemblyResolver paramètres et se typeResolver trouvent dans la GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) surcharge de méthode.

Notes

Si typeName est introuvable, l’appel à la GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) méthode retourne null . Elle ne lève pas d’exception. Pour contrôler si une exception est levée, appelez une surcharge de la GetType méthode qui a un throwOnError paramètre.

L’appel de cette surcharge de méthode est identique à l’appel GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) de la surcharge de méthode et à la spécification false des throwOnError ignoreCase paramètres et.

S’applique à

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.

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);
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. Si le paramètre typeResolver est fourni, le nom de type peut être n'importe quelle chaîne pouvant être résolue par typeResolver. 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/System.Private.CoreLib.dll, auquel cas il suffit de fournir le nom de type qualifié par son espace de noms.

assemblyResolver
Func<AssemblyName,Assembly>

Méthode qui trouve et retourne l'assembly spécifié dans typeName. Le nom de l'assembly est passé à assemblyResolver en tant qu'objet AssemblyName. Si typeName ne contient pas le nom d'un assembly, assemblyResolver n'est pas appelé. Si assemblyResolver n'est pas fourni, une résolution d'assembly standard est effectuée.

Attention   Ne passez pas de méthodes provenant d’appelants inconnus ou non fiables. Vous risqueriez d'élever les privilèges du code malveillant. Utilisez uniquement les méthodes que vous fournissez ou avec lesquelles vous êtes familiarisé.

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. Si aucun assembly n'est fourni, la méthode peut en fournir un. 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.

Attention   Ne passez pas de méthodes provenant d’appelants inconnus ou non fiables.

throwOnError
Boolean

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

Retours

Type

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

Exceptions

typeName a la valeur null.

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

throwOnError a la valeur true et le type est introuvable.

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

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

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

  • ou - typeName représente un tableau de TypedReference.

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

  • ou - throwOnError a la valeur true et typeName contient une syntaxe non valide (par exemple, « MyType[,*,] »).

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

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

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

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

  • ou - typeName contient un nom d’assembly non valide.

  • ou - typeName est un nom d’assembly valide sans nom de type.

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

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

  • ou -

L’assembly a été compilé avec une version du Common Language Runtime postérieure à la version actuellement chargée.

Remarques

Les scénarios d’utilisation de cette méthode et des détails sur les assemblyResolver paramètres et se typeResolver trouvent dans la GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) surcharge de méthode.

L’appel de cette surcharge de méthode est identique à l’appel GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) de la surcharge de méthode et à la spécification false de pour le ignoreCase paramètre.

S’applique à

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.

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);
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. Si le paramètre typeResolver est fourni, le nom de type peut être n'importe quelle chaîne pouvant être résolue par typeResolver. 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/System.Private.CoreLib.dll, auquel cas il suffit de fournir le nom de type qualifié par son espace de noms.

assemblyResolver
Func<AssemblyName,Assembly>

Méthode qui trouve et retourne l'assembly spécifié dans typeName. Le nom de l'assembly est passé à assemblyResolver en tant qu'objet AssemblyName. Si typeName ne contient pas le nom d'un assembly, assemblyResolver n'est pas appelé. Si assemblyResolver n'est pas fourni, une résolution d'assembly standard est effectuée.

Attention   Ne passez pas de méthodes provenant d’appelants inconnus ou non fiables. Vous risqueriez d'élever les privilèges du code malveillant. Utilisez uniquement les méthodes que vous fournissez ou avec lesquelles vous êtes familiarisé.

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. Si aucun assembly n'est fourni, la méthode peut en fournir un. 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.

Attention   Ne passez pas de méthodes provenant d’appelants inconnus ou non fiables.

throwOnError
Boolean

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

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.

Retours

Type

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

Exceptions

typeName a la valeur null.

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

throwOnError a la valeur true et le type est introuvable.

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

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

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

  • ou - typeName représente un tableau de TypedReference.

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

  • ou - throwOnError a la valeur true et typeName contient une syntaxe non valide (par exemple, « MyType[,*,] »).

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

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

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

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

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

  • ou - typeName contient un nom d’assembly non valide.

  • ou - typeName est un nom d’assembly valide sans nom de type.

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

  • ou -

L’assembly a été compilé avec une version du Common Language Runtime postérieure à la version actuellement chargée.

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 GetType méthode par des implémentations plus flexibles. 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 :

  • Contrôler la version d’un assembly à partir de laquelle un type est chargé.

  • Fournissez un autre emplacement pour rechercher un nom de type qui n’inclut pas de nom d’assembly.

  • Charger les assemblys à l’aide de noms d’assemblys partiels.

  • Retourne les sous-classes de System.Type qui ne sont pas créées par le 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. D’autres surcharges de la GetType méthode requièrent un nom de type qualifié d’assembly, qui comprend le numéro de version.

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 GetType méthode sont des types au moment de l’exécution.

Remarques sur l’utilisation

Cette surcharge de méthode et ses surcharges associées analysent typeName le nom d’un type et le nom d’un assembly, puis résolvent les noms. 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.

Notes

Si vous n’êtes pas familiarisé avec le concept de noms de types qualifiés d’assembly, consultez la AssemblyQualifiedName propriété.

Si typeName n’est pas un nom qualifié d’assembly, la résolution de l’assembly est ignorée. Les noms de types non qualifiés peuvent être résolus dans le contexte d' mscorlib.dll/System.Private.CoreLib.dll ou de l’assembly en cours d’exécution, ou vous pouvez éventuellement fournir un assembly dans le typeResolver paramètre. 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 .

Remarques sur l’utilisation générale :

  • Ne transmettez pas de méthodes à assemblyResolver ou typeResolver si elles proviennent d’appelants inconnus ou non fiables. Utilisez uniquement les méthodes que vous fournissez ou avec lesquelles vous êtes familiarisé.

    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.

  • Si vous omettez les assemblyResolver paramètres et/ou typeResolver , la valeur du throwOnError paramètre est passée aux méthodes qui effectuent la résolution par défaut.

  • Si throwOnError a la valeur true , cette méthode lève une exception TypeLoadException lorsque typeResolver retourne null , et un FileNotFoundException lorsque assemblyResolver retourne null .

  • Cette méthode n’intercepte pas les exceptions levées par assemblyResolver et typeResolver . Vous êtes responsable de toutes les exceptions levées par les méthodes de résolution.

Résoudre des assemblys

La assemblyResolver méthode reçoit un AssemblyName objet, qui est produit en analysant le nom de l’assembly de chaîne inclus dans typeName . Si typeName ne contient pas de nom d’assembly, assemblyResolver n’est pas appelé et null est passé à typeResolver .

Si assemblyResolver n’est pas fourni, la détection d’assembly standard est utilisée pour localiser l’assembly. Si assemblyResolver est fourni, la GetType méthode 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.

La assemblyResolver méthode doit retourner null si l’assembly ne peut pas être résolu. Si assemblyResolver retourne null , typeResolver n’est pas appelé et aucun traitement supplémentaire n’est effectué ; en outre, si throwOnError a true la valeur, une FileNotFoundException est levée.

Si le AssemblyName passé à assemblyResolver est un nom partiel, une ou plusieurs de ses parties sont null . Par exemple, s’il n’a pas de version, la Version propriété est null . Si la Version propriété, la CultureInfo propriété et la GetPublicKeyToken méthode retournent toutes null , seul le nom simple de l’assembly a été fourni. La assemblyResolver méthode peut utiliser ou ignorer toutes les parties du nom de l’assembly.

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.

Résolution des types

Si typeName ne spécifie pas de nom d’assembly, typeResolver est toujours appelé. Si typeName spécifie un nom d’assembly, typeResolver est appelé uniquement lorsque le nom de l’assembly est résolu avec succès. Si assemblyResolver ou la détection d’assembly standard retourne null , typeResolver n’est pas appelé.

La typeResolver méthode reçoit trois arguments :

  • Assembly à rechercher ou null si typeName ne contient pas de nom d’assembly.

  • Nom simple du type. Dans le cas d’un type imbriqué, il s’agit du type contenant le plus à l’extérieur. Dans le cas d’un type générique, il s’agit du nom simple du type générique.

  • Valeur booléenne qui est true si la casse des noms de types doit être ignorée.

L’implémentation détermine la façon dont ces arguments sont utilisés. La typeResolver méthode doit retourner null si elle ne peut pas résoudre le type. Si typeResolver retourne null et throwOnError est true , cette surcharge de GetType lève une 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.

Résolution de types imbriqués

Si typeName est un type imbriqué, seul le nom du type conteneur le plus à l’extérieur est passé à typeResolver . Quand typeResolver retourne ce type, la GetNestedType méthode est appelée de manière récursive jusqu’à ce que le type imbriqué le plus profond ait été résolu.

Résolution des types génériques

GetTypeEst appelé 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. 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.

La combinaison de assemblyResolver et typeResolver que vous fournissez doit être capable de résoudre tous les niveaux de cette récurrence. Par exemple, supposons que vous fournissiez un assemblyResolver qui contrôle le chargement de MyAssembly . Supposons que vous souhaitiez résoudre le type générique Dictionary<string, MyType> ( Dictionary(Of String, MyType) en Visual Basic). Vous pouvez passer le nom de type générique suivant :

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

Notez que MyType est le seul argument de type qualifié d’assembly. Les noms des Dictionary<TKey,TValue> classes et ne String sont pas qualifiés par assembly. Vous typeResolver devez être en mesure de gérer un assembly ou null , car il recevra null pour Dictionary<TKey,TValue> et String . Il peut gérer ce cas en appelant une surcharge de la GetType méthode qui prend une chaîne, car les deux noms de types non qualifiés se trouvent dans mscorlib.dll/System.Private.CoreLib.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 assemblyResolver méthode 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 un assembly.

Supposons à présent qu’au lieu de System.String , le premier type d’argument générique est YourType , de 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/System.Private.CoreLib.dll ni à l’assembly en cours d’exécution, vous ne pouvez pas résoudre YourType sans un nom qualifié d’assembly. Étant donné que votre assemblyResolve sera appelé de manière récursive, il doit être en mesure de gérer ce cas. Au lieu de retourner des null assemblys autres que MyAssembly , il effectue maintenant un chargement d’assembly à l’aide de l' AssemblyName objet fourni.

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.

Résolution de noms de types avec des caractères spéciaux

Certains caractères ont des significations spéciales dans les noms qualifiés d’assembly. 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. Pour éviter les erreurs d’analyse, vous devez placer les caractères spéciaux dans une séquence d’échappement à l’aide d’une barre oblique inverse avant de pouvoir passer le nom qualifié d’assembly à la GetType méthode. Par exemple, si un type est nommé Strange]Type , le caractère d’échappement doit être ajouté avant le crochet comme suit : Strange\]Type .

Notes

les noms avec ces caractères spéciaux ne peuvent pas être créés en Visual Basic ou en C#, mais ils peuvent être créés à l’aide du langage msil (Microsoft intermediate language) ou en émettant des assemblys dynamiques.

Le tableau suivant présente les caractères spéciaux pour les noms de types.

Caractère Signification
, point Délimiteur pour les noms qualifiés d’assembly.
[] (crochets) 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.
& (esperluette) En guise de suffixe, indique qu’un type est un type référence.
* sert En guise de suffixe, indique qu’un type est un type pointeur.
+ Protect Délimiteur pour les types imbriqués.
\ vers Caractère d’échappement.

Les propriétés telles que AssemblyQualifiedName retournent des chaînes correctement placées dans une séquence d’échappement. Vous devez passer les chaînes correctement placées dans une séquence d’échappement à la GetType méthode. À son tour, la GetType méthode passe correctement les noms placés dans une séquence d’échappement à typeResolver et aux méthodes de résolution de type par défaut. Si vous devez comparer un nom à un nom sans séquence d’échappement dans typeResolver , vous devez supprimer les caractères d’échappement.

Retour aux Remarques d’utilisation.

Résolution de noms mixtes

Le tableau suivant récapitule les interactions entre assemblyResolver , typeResolver et la résolution de noms par défaut, pour toutes les combinaisons de nom de type et de nom d’assembly dans typeName :

Contenu du nom de type Méthode du programme de résolution d’assembly Méthode du programme de résolution de type Résultats
type, assembly null null Équivalent à l’appel de la Type.GetType(String, Boolean, Boolean) surcharge de méthode.
type, assembly fournit null assemblyResolver retourne l’assembly ou retourne null s’il ne peut pas résoudre l’assembly. Si l’assembly est résolu, la Assembly.GetType(String, Boolean, Boolean) surcharge de méthode est utilisée pour charger le type à partir de l’assembly ; sinon, il n’y a aucune tentative de résolution du type.
type, assembly null fournit Équivalent à la conversion du nom de l’assembly en un AssemblyName objet et à l’appel de la Assembly.Load(AssemblyName) surcharge de méthode pour récupérer l’assembly. Si l’assembly est résolu, il est passé à typeResolver ; sinon, typeResolver n’est pas appelé et aucune autre tentative de résolution du type n’est effectuée.
type, assembly fournit fournit assemblyResolver retourne l’assembly ou retourne null s’il ne peut pas résoudre l’assembly. Si l’assembly est résolu, il est passé à typeResolver ; sinon, typeResolver n’est pas appelé et aucune autre tentative de résolution du type n’est effectuée.
type NULL, fourni null Équivalent à l’appel de la Type.GetType(String, Boolean, Boolean) surcharge de méthode. Étant donné que le nom de l’assembly n’est pas fourni, la recherche porte uniquement sur mscorlib.dll/System.Private.CoreLib.dll et l’assembly en cours d’exécution. Si assemblyResolver est fourni, il est ignoré.
type NULL, fourni fournit typeResolver est appelé, et null est passé pour l’assembly. typeResolver peut fournir un type à partir de n’importe quel assembly, y compris les assemblys qu’il charge à cet effet. Si assemblyResolver est fourni, il est ignoré.
assembly NULL, fourni NULL, fourni Une FileLoadException exception est levée, car le nom de l’assembly est analysé comme s’il s’agissait d’un nom de type qualifié d’assembly. Cela aboutit à un nom d’assembly non valide.

Retour à : Remarques sur l’utilisation, résolution des assemblys, résolution des types.

S’applique à