Type.GetType Type.GetType Type.GetType Type.GetType Method

Definizione

Ottiene un oggetto Type che rappresenta il tipo specificato.Gets a Type object that represents the specified type.

Overload

GetType() GetType() GetType() GetType()

Ottiene l'oggetto Type corrente.Gets the current Type.

GetType(String) GetType(String) GetType(String) GetType(String)

Ottiene l'oggetto Type con il nome specificato, eseguendo una ricerca con distinzione tra maiuscole e minuscole.Gets the Type with the specified name, performing a case-sensitive search.

GetType(String, Boolean) GetType(String, Boolean) GetType(String, Boolean) GetType(String, Boolean)

Ottiene l'oggetto Type con il nome specificato, eseguendo una ricerca con distinzione tra maiuscole e minuscole e specificando se generare un'eccezione in caso il tipo non venga trovato.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) GetType(String, Boolean, Boolean) GetType(String, Boolean, Boolean) GetType(String, Boolean, Boolean)

Ottiene l'oggetto Type con il nome specificato, che indica se generare un'eccezione quando viene trovato il tipo e se eseguire una ricerca con distinzione tra maiuscole e minuscole.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>) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>)

Ottiene il tipo con il nome specificato, fornendo facoltativamente metodi personalizzati per risolvere l'assembly e il tipo.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) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean)

Ottiene il tipo con il nome specificato, indicando se generare un'eccezione se il tipo non viene trovato e fornendo facoltativamente metodi personalizzati per risolvere l'assembly e il tipo.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) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean)

Ottiene il tipo con il nome specificato, indicando se eseguire una ricerca facendo distinzione tra maiuscole e minuscole e se generare un'eccezione se il tipo non viene trovato e fornendo facoltativamente metodi personalizzati per risolvere l'assembly e il tipo.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() GetType() GetType() GetType()

Ottiene l'oggetto Type corrente.Gets the current Type.

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

Restituisce

Oggetto Type corrente.The current Type.

Implementazioni

Eccezioni

Viene richiamato un inizializzatore di classi e viene generata un'eccezione.A class initializer is invoked and throws an exception.

Vedi anche

GetType(String) GetType(String) GetType(String) GetType(String)

Ottiene l'oggetto Type con il nome specificato, eseguendo una ricerca con distinzione tra maiuscole e minuscole.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

Parametri

typeName
String String String String

Nome qualificato dall'assembly del tipo da ottenere.The assembly-qualified name of the type to get. Vedere AssemblyQualifiedName.See AssemblyQualifiedName. Se il tipo è incluso nell'assembly attualmente in esecuzione o in Mscorlib.dll, è sufficiente specificare il nome del tipo qualificato in base al relativo spazio dei nomi.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.

Restituisce

Tipo con il nome specificato, se presente; in caso contrario, null.The type with the specified name, if found; otherwise, null.

Eccezioni

Viene richiamato un inizializzatore di classi e viene generata un'eccezione.A class initializer is invoked and throws an exception.

typeName rappresenta un tipo generico che ha un tipo di puntatore, un tipo ByRef o Void tra i relativi argomenti di tipo.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

-oppure--or- typeName rappresenta un tipo generico che ha un numero errato di argomenti di tipo.typeName represents a generic type that has an incorrect number of type arguments.

In alternativa-or- typeName rappresenta un tipo generico e uno dei relativi argomenti di tipo non soddisfa i vincoli per il parametro di tipo corrispondente.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

typeName rappresenta una matrice di TypedReference.typeName represents an array of TypedReference.

In .NET per app di Windows Store o nella libreria di classi portabile rilevare invece l'eccezione della classe di base, IOException.In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, IOException, instead.

L'assembly o una delle relative dipendenze è stato trovato, ma non può essere caricato.The assembly or one of its dependencies was found, but could not be loaded.

L'assembly o una delle relative dipendenze non è valido.The assembly or one of its dependencies is not valid.

-oppure--or-

Attualmente è caricata la versione 2.0 o successiva di Common Language Runtime e l'assembly è stato compilato con una versione successiva.Version 2.0 or later of the common language runtime is currently loaded, and the assembly was compiled with a later version.

Esempi

Nell'esempio seguente viene recuperato il tipo System.Int32 di e viene utilizzato l'oggetto tipo per FullName visualizzare la System.Int32proprietà di.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

Commenti

È possibile utilizzare il GetType metodo per ottenere un Type oggetto per un tipo in un altro assembly se si conosce il nome qualificato dall'assembly, che può essere ottenuto AssemblyQualifiedNameda.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. GetTypecausa il caricamento dell'assembly specificato in typeName.GetType causes loading of the assembly specified in typeName. È anche possibile caricare un assembly usando il Assembly.Load metodo, quindi usare il Assembly.GetType metodo o Assembly.GetTypes per ottenere Type gli oggetti.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. Se un tipo si trova in un assembly noto al programma in fase di compilazione, è più efficiente utilizzare typeof in C# o l' GetType operatore in 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.

Nota

Se typeName non viene trovato, la chiamata GetType(String) al metodo restituisce null.If typeName cannot be found, the call to the GetType(String) method returns null. Non genera un'eccezione.It does not throw an exception. Per controllare se viene generata un'eccezione, chiamare un overload del GetType metodo che ha un throwOnError parametro.To control whether an exception is thrown, call an overload of the GetType method that has a throwOnError parameter.

GetTypefunziona solo su assembly caricati dal disco.GetType only works on assemblies loaded from disk. Se si chiama GetType per cercare un tipo definito in un assembly dinamico definito usando i System.Reflection.Emit servizi, è possibile che si ottenga un comportamento incoerente.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. Il comportamento dipende dal fatto che l'assembly dinamico sia persistente, ovvero creato utilizzando le RunAndSave modalità di accesso o Save dell' System.Reflection.Emit.AssemblyBuilderAccess enumerazione.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. Se l'assembly dinamico è permanente ed è stato scritto su disco prima GetType che venga chiamato, il caricatore trova l'assembly salvato su disco, carica tale assembly e recupera il tipo da tale 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. Se l'assembly non è stato salvato su disco quando GetType viene chiamato, il metodo restituisce null.If the assembly has not been saved to disk when GetType is called, the method returns null. GetTypenon comprende gli assembly dinamici temporanei. Pertanto, la GetType chiamata di per recuperare un tipo in un assembly dinamico nulltemporaneo restituisce un valore.GetType does not understand transient dynamic assemblies; therefore, calling GetType to retrieve a type in a transient dynamic assembly returns null.

Per utilizzare GetType in un modulo dinamico, sottoscrivere l' AppDomain.AssemblyResolve evento e chiamare GetType prima del salvataggio.To use GetType on a dynamic module, subscribe to the AppDomain.AssemblyResolve event and call GetType before saving. In caso contrario, si otterranno due copie dell'assembly in memoria.Otherwise, you will get two copies of the assembly in memory.

La tabella seguente mostra quali membri di una classe di base vengono restituiti dai Get metodi durante la reflection su un tipo.The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

Tipo di membroMember Type StaticStatic Non staticoNon-Static
CostruttoreConstructor NoNo NoNo
CampoField NoNo Sì.Yes. Un campo è sempre nascosto per nome e firma.A field is always hide-by-name-and-signature.
eventEvent Non applicabileNot applicable La regola Common Type System è che l'ereditarietà è identica a quella dei metodi che implementano la proprietà.The common type system rule is that the inheritance is the same as that of the methods that implement the property. La reflection considera le proprietà come nascoste per nome e firma.Reflection treats properties as hide-by-name-and-signature. Vedere la nota 2 di seguito.See note 2 below.
MetodoMethod NoNo Sì.Yes. Un metodo (sia virtuale che non virtuale) può essere nascosto in base al nome o nascosto per nome e firma.A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
Tipo annidatoNested Type NoNo NoNo
ProprietàProperty Non applicabileNot applicable La regola Common Type System è che l'ereditarietà è identica a quella dei metodi che implementano la proprietà.The common type system rule is that the inheritance is the same as that of the methods that implement the property. La reflection considera le proprietà come nascoste per nome e firma.Reflection treats properties as hide-by-name-and-signature. Vedere la nota 2 di seguito.See note 2 below.
  1. Hide-by-Name-and-signature prende in considerazione tutte le parti della firma, inclusi i modificatori personalizzati, i tipi restituiti, i tipi di parametro, le sentinelle e le convenzioni di chiamata non gestite.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. Si tratta di un confronto binario.This is a binary comparison.

  2. Per la reflection, le proprietà e gli eventi sono nascosti per nome e firma.For reflection, properties and events are hide-by-name-and-signature. Se si dispone di una proprietà con una funzione di accesso get e set nella classe di base, ma la classe derivata dispone solo di una funzione di accesso get, la proprietà della classe derivata nasconde la proprietà della classe base e non sarà possibile accedere al setter sulla classe di 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. Gli attributi personalizzati non fanno parte del Common Type System.Custom attributes are not part of the common type system.

Le matrici o i tipi COM non vengono cercati a meno che non siano già stati caricati nella tabella delle classi disponibili.Arrays or COM types are not searched for unless they have already been loaded into the table of available classes.

typeNamepuò essere il nome del tipo qualificato in base al relativo spazio dei nomi o un nome qualificato dall'assembly che include una specifica del nome dell'assembly.typeName can be the type name qualified by its namespace or an assembly-qualified name that includes an assembly name specification. Vedere AssemblyQualifiedName.See AssemblyQualifiedName.

Se typeName include lo spazio dei nomi ma non il nome dell'assembly, questo metodo esegue la ricerca solo nell'assembly dell'oggetto chiamante e in mscorlib. dll, in questo ordine.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. Se typeName è completo con il nome dell'assembly parziale o completo, questo metodo esegue la ricerca nell'assembly specificato.If typeName is fully qualified with the partial or complete assembly name, this method searches in the specified assembly. Se l'assembly ha un nome sicuro, è necessario specificare un nome di assembly completo.If the assembly has a strong name, a complete assembly name is required.

La AssemblyQualifiedName proprietà restituisce un nome di tipo completo, inclusi i tipi annidati, il nome dell'assembly e gli argomenti di tipo generico.The AssemblyQualifiedName property returns a fully qualified type name including nested types, the assembly name, and generic type arguments. Tutti i compilatori che supportano il Common Language Runtime genereranno il nome semplice di una classe annidata e la reflection costruirà un nome modificato quando viene eseguita una query, in base alle convenzioni seguenti.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.

Nota

In .NET Framework versione 2,0, l'architettura del processore viene aggiunta all'identità dell'assembly e può essere specificata come parte delle stringhe dei nomi degli 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. Ad esempio, "ProcessorArchitecture = msil".For example, "ProcessorArchitecture=msil". Tuttavia, non è incluso nella stringa restituita dalla AssemblyQualifiedName proprietà, per motivi di compatibilità.However, it is not included in the string returned by the AssemblyQualifiedName property, for compatibility reasons. È anche possibile caricare tipi creando un AssemblyName oggetto e passandolo a un overload appropriato Load del metodo.You can also load types by creating an AssemblyName object and passing it to an appropriate overload of the Load method. È quindi possibile usare il Assembly.GetType metodo per caricare i tipi dall'assembly.You can then use the Assembly.GetType method to load types from the assembly. Vedere anche AssemblyName.ProcessorArchitecture.See also AssemblyName.ProcessorArchitecture.

DelimitatoreDelimiter SignificatoMeaning
Barra rovesciata (\)Backslash (\) Carattere di escape.Escape character.
Apice inverso (')Backtick (`) Precede una o più cifre che rappresentano il numero di parametri di tipo, che si trova alla fine del nome di un tipo generico.Precedes one or more digits representing the number of type parameters, located at the end of the name of a generic type.
Parentesi quadre ([])Brackets ([]) Racchiudere un elenco di argomenti di tipo generico per un tipo generico costruito; all'interno di un elenco di argomenti di tipo, racchiudere un tipo qualificato dall'assembly.Enclose a generic type argument list, for a constructed generic type; within a type argument list, enclose an assembly-qualified type.
Virgola (,)Comma (,) Precede il nome dell'assembly.Precedes the Assembly name.
Punto (.)Period (.) Indica gli identificatori degli spazi dei nomi.Denotes namespace identifiers.
Segno più (+)Plus sign (+) Precede una classe annidata.Precedes a nested class.

Il nome completo di una classe, ad esempio, potrebbe essere simile al seguente:For example, the fully qualified name for a class might look like this:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly  

Se lo spazio dei nomi è namespace. Sub + Namespace, la stringa deve precedere il segno più (+) con un carattere di escape (\) per impedire che venga interpretata come separatore di annidamento.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 reflection genera questa stringa nel modo seguente:Reflection emits this string as follows:

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

"+ +"\Diventa "+\+" e\"" diventa "\\".A "++" becomes "\+\+", and a "\" becomes "\\".

Questo nome completo può essere reso permanente e successivamente usato per caricare Type.This qualified name can be persisted and later used to load the Type. Per cercare e caricare un oggetto Type, usare GetType solo con il nome del tipo o con il nome del tipo completo di assembly.To search for and load a Type, use GetType either with the type name only or with the assembly qualified type name. GetTypecon il nome del tipo, solo l'oggetto Type verrà cercato nell'assembly del chiamante e quindi nell'assembly di sistema.GetType with the type name only will look for the Type in the caller's assembly and then in the System assembly. GetTypecon il nome del tipo completo di assembly cercherà Type in qualsiasi assembly.GetType with the assembly qualified type name will look for the Type in any assembly.

I nomi dei tipi possono includere caratteri finali che indicano informazioni aggiuntive sul tipo, ad esempio se il tipo è un tipo di riferimento, un tipo di puntatore o un tipo di matrice.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. Per recuperare il nome del tipo senza questi caratteri finali, usare t.GetElementType().ToString(), dove t è il tipo.To retrieve the type name without these trailing characters, use t.GetElementType().ToString(), where t is the type.

Gli spazi sono rilevanti in tutti i componenti del nome del tipo, eccetto il nome dell'assembly.Spaces are relevant in all type name components except the assembly name. Nel nome dell'assembly, gli spazi prima del separatore ',' sono rilevanti, ma gli spazi dopo il separatore ',' vengono ignorati.In the assembly name, spaces before the ',' separator are relevant, but spaces after the ',' separator are ignored.

Il nome di un tipo generico termina con un apice inverso`() seguito da cifre che rappresentano il numero di argomenti di tipo generico.The name of a generic type ends with a backtick (`) followed by digits representing the number of generic type arguments. Lo scopo di questo nome è quello di consentire ai compilatori di supportare i tipi generici con lo stesso nome ma con numeri diversi di parametri di tipo, che si verificano nello stesso ambito.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. La reflection, Tuplead esempio, restituisce la tuplaand ``2 con nomi denominati Tuple(Of T) 1 Tuple(Of T0, T1) da metodi generici Tuple<T> e in\<T0, T1> Visual Basic, C#o e tupla in 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#.

Per i tipi generici, l'elenco di argomenti di tipo è racchiuso tra parentesi quadre e gli argomenti di tipo sono separati da virgole.For generic types, the type argument list is enclosed in brackets, and the type arguments are separated by commas. Un generico Dictionary<TKey,TValue> , ad esempio, ha due parametri di tipo.For example, a generic Dictionary<TKey,TValue> has two type parameters. Una Dictionary<TKey,TValue> String di MyType con chiavi di tipo potrebbe essere rappresentata come segue:A Dictionary<TKey,TValue> of MyType with keys of type String might be represented as follows:

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

Per specificare un tipo qualificato dall'assembly all'interno di un elenco di argomenti di tipo, racchiudere il tipo qualificato dall'assembly tra parentesi quadre.To specify an assembly-qualified type within a type argument list, enclose the assembly-qualified type within brackets. In caso contrario, le virgole che separano le parti del nome qualificato dall'assembly vengono interpretate come delimitazione di argomenti di tipo aggiuntivi.Otherwise, the commas that separate the parts of the assembly-qualified name are interpreted as delimiting additional type arguments. Ad esempio, una Dictionary<TKey,TValue> di MyType da MyAssembly. dll, con chiavi di tipo String, può essere specificata come indicato di seguito: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]]")  

Nota

Un tipo qualificato dall'assembly può essere racchiuso tra parentesi quadre solo quando viene visualizzato all'interno di un elenco di parametri di tipo.An assembly-qualified type can be enclosed in brackets only when it appears within a type parameter list. Le regole per la ricerca di assembly per i tipi qualificati e non qualificati negli elenchi di parametri di tipo sono le stesse delle regole per i tipi non generici qualificati e non qualificati.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.

I tipi nullable sono un caso speciale di tipi generici.Nullable types are a special case of generic types. Ad esempio, un Nullable Int32 è rappresentato dalla stringa "System. Nullable ' 1 [System. Int32]".For example, a nullable Int32 is represented by the string "System.Nullable`1[System.Int32]".

Nota

In C#, C++e Visual Basic è anche possibile ottenere tipi nullable usando operatori di tipo.In C#, C++, and Visual Basic you can also get nullable types using type operators. Ad esempio, il tipo Boolean nullable viene restituito da typeof(Nullable<bool>) in C#, da Nullable<Boolean>::typeid in C++e da GetType(Nullable(Of Boolean)) in 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.

Nella tabella seguente viene illustrata la sintassi utilizzata GetType con per diversi tipi.The following table shows the syntax you use with GetType for various types.

Per ottenereTo Get UsaUse
NullableInt32A nullable Int32 Type.GetType("System.Nullable`1[System.Int32]")
Puntatore non gestito aMyTypeAn unmanaged pointer to MyType Type.GetType("MyType*")
Puntatore non gestito a un puntatore aMyTypeAn unmanaged pointer to a pointer to MyType Type.GetType("MyType**")
Un puntatore gestito o un riferimento aMyTypeA managed pointer or reference to MyType Type.GetType("MyType&").Type.GetType("MyType&"). Si noti che, a differenza dei puntatori, i riferimenti sono limitati a un solo livello.Note that unlike pointers, references are limited to one level.
Classe padre e classe annidataA parent class and a nested class Type.GetType("MyParentClass+MyNestedClass")
Matrice unidimensionale con limite inferiore pari a 0A one-dimensional array with a lower bound of 0 Type.GetType("MyType[]")
Matrice unidimensionale con limite inferiore sconosciutoA one-dimensional array with an unknown lower bound Type.GetType("MyType[*]")
Matrice n-dimensionaleAn n-dimensional array Una virgola (,) racchiusa tra parentesi quadre per un totale di n-1 volte.A comma (,) inside the brackets a total of n-1 times. Ad esempio, System.Object[,,] rappresenta una matrice tridimensionale Object .For example, System.Object[,,] represents a three-dimensional Object array.
Matrice di matrici unidimensionaliAn array of one-dimensional arrays Type.GetType("MyType[][]")
Matrice bidimensionale rettangolare con limiti inferiori sconosciutiA rectangular two-dimensional array with unknown lower bounds Type.GetType("MyType[,]")
Un tipo generico con un argomento di tipoA generic type with one type argument Type.GetType("MyGenericType`1[MyType]")
Tipo generico con due argomenti di tipoA generic type with two type arguments Type.GetType("MyGenericType`2[MyType,AnotherType]")
Un tipo generico con due argomenti di tipo completo di assemblyA generic type with two assembly-qualified type arguments Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
Un tipo generico qualificato dall'assembly con un argomento di tipo qualificato dall'assemblyAn assembly-qualified generic type with an assembly-qualified type argument Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
Tipo generico il cui argomento di tipo è un tipo generico con due argomenti di tipoA generic type whose type argument is a generic type with two type arguments Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")
Vedi anche

GetType(String, Boolean) GetType(String, Boolean) GetType(String, Boolean) GetType(String, Boolean)

Ottiene l'oggetto Type con il nome specificato, eseguendo una ricerca con distinzione tra maiuscole e minuscole e specificando se generare un'eccezione in caso il tipo non venga trovato.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

Parametri

typeName
String String String String

Nome qualificato dall'assembly del tipo da ottenere.The assembly-qualified name of the type to get. Vedere AssemblyQualifiedName.See AssemblyQualifiedName. Se il tipo è incluso nell'assembly attualmente in esecuzione o in Mscorlib.dll, è sufficiente specificare il nome del tipo qualificato in base al relativo spazio dei nomi.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 Boolean Boolean Boolean

true per generare un'eccezione se non è possibile trovare il tipo; false per restituire null.true to throw an exception if the type cannot be found; false to return null. Se si specifica false vengono eliminate alcune condizioni di eccezione, ma non tutte.Specifying false also suppresses some other exception conditions, but not all of them. Vedere la sezione relativa alle eccezioni.See the Exceptions section.

Restituisce

Tipo con il nome specificato.The type with the specified name. Se il tipo non viene trovato, il parametro throwOnError specifica se viene restituito null o se viene generata un'eccezione.If the type is not found, the throwOnError parameter specifies whether null is returned or an exception is thrown. In alcuni casi, viene generata un'eccezione indipendentemente dal valore di throwOnError.In some cases, an exception is thrown regardless of the value of throwOnError. Vedere la sezione relativa alle eccezioni.See the Exceptions section.

Eccezioni

Viene richiamato un inizializzatore di classi e viene generata un'eccezione.A class initializer is invoked and throws an exception.

throwOnError è true e il tipo non è stato trovato.throwOnError is true and the type is not found.

-oppure--or- throwOnError è true e typeName contiene caratteri non validi, ad esempio una scheda incorporata.throwOnError is true and typeName contains invalid characters, such as an embedded tab. In alternativa-or- throwOnError è true e typeName è una stringa vuota.throwOnError is true and typeName is an empty string.

-oppure--or- throwOnError è true e typeName rappresenta un tipo di matrice con una dimensione non valida.throwOnError is true and typeName represents an array type with an invalid size.

-oppure--or- typeName rappresenta una matrice di TypedReference.typeName represents an array of TypedReference.

throwOnError è true e la sintassi di typeName non è valida.throwOnError is true and typeName contains invalid syntax. Ad esempio: "MyType[,*,]".For example, "MyType[,*,]".

-oppure--or- typeName rappresenta un tipo generico che ha un tipo di puntatore, un tipo ByRef o Void tra i relativi argomenti di tipo.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

-oppure--or- typeName rappresenta un tipo generico che ha un numero errato di argomenti di tipo.typeName represents a generic type that has an incorrect number of type arguments.

-oppure--or- typeName rappresenta un tipo generico e uno dei relativi argomenti di tipo non soddisfa i vincoli per il parametro di tipo corrispondente.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

throwOnError è true e l'assembly o una delle sue dipendenze non è stato trovato.throwOnError is true and the assembly or one of its dependencies was not found.

In .NET per app di Windows Store o nella libreria di classi portabile rilevare invece l'eccezione della classe di base, IOException.In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, IOException, instead.

L'assembly o una delle relative dipendenze è stato trovato, ma non può essere caricato.The assembly or one of its dependencies was found, but could not be loaded.

L'assembly o una delle relative dipendenze non è valido.The assembly or one of its dependencies is not valid.

In alternativa-or-

Attualmente è caricata la versione 2.0 o successiva di Common Language Runtime e l'assembly è stato compilato con una versione successiva.Version 2.0 or later of the common language runtime is currently loaded, and the assembly was compiled with a later version.

Esempi

Nell'esempio seguente viene recuperato il tipo System.Int32 di e viene utilizzato l'oggetto tipo per FullName visualizzare la System.Int32proprietà di.The following example retrieves the type of System.Int32 and uses that type object to display the FullName property of System.Int32. Se un oggetto tipo fa riferimento a un assembly che non esiste, in questo esempio viene generata un'eccezione.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

Commenti

È possibile utilizzare il GetType metodo per ottenere un Type oggetto per un tipo in un altro assembly se si conosce il nome qualificato dall'assembly, che può essere ottenuto AssemblyQualifiedNameda.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. GetTypecausa il caricamento dell'assembly specificato in typeName.GetType causes loading of the assembly specified in typeName. È anche possibile caricare un assembly usando il Assembly.Load metodo, quindi usare il Assembly.GetType metodo o Assembly.GetTypes per ottenere Type gli oggetti.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. Se un tipo si trova in un assembly noto al programma in fase di compilazione, è più efficiente utilizzare typeof in C# o l' GetType operatore in 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.

GetTypefunziona solo su assembly caricati dal disco.GetType only works on assemblies loaded from disk. Se si chiama GetType per cercare un tipo definito in un assembly dinamico definito usando i System.Reflection.Emit servizi, è possibile che si ottenga un comportamento incoerente.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. Il comportamento dipende dal fatto che l'assembly dinamico sia persistente, ovvero creato utilizzando le RunAndSave modalità di accesso o Save dell' System.Reflection.Emit.AssemblyBuilderAccess enumerazione.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. Se l'assembly dinamico è permanente ed è stato scritto su disco prima GetType che venga chiamato, il caricatore trova l'assembly salvato su disco, carica tale assembly e recupera il tipo da tale 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. Se l'assembly non è stato salvato su disco quando GetType viene chiamato, il metodo restituisce null.If the assembly has not been saved to disk when GetType is called, the method returns null. GetTypenon comprende gli assembly dinamici temporanei. Pertanto, la GetType chiamata di per recuperare un tipo in un assembly dinamico nulltemporaneo restituisce un valore.GetType does not understand transient dynamic assemblies; therefore, calling GetType to retrieve a type in a transient dynamic assembly returns null.

Per utilizzare GetType in un modulo dinamico, sottoscrivere l' AppDomain.AssemblyResolve evento e chiamare GetType prima del salvataggio.To use GetType on a dynamic module, subscribe to the AppDomain.AssemblyResolve event and call GetType before saving. In caso contrario, si otterranno due copie dell'assembly in memoria.Otherwise, you will get two copies of the assembly in memory.

Il throwOnError parametro specifica cosa accade quando il tipo non viene trovato ed evita anche determinate altre condizioni di eccezione, come descritto nella sezione eccezioni.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. Alcune eccezioni vengono generate indipendentemente dal valore di throwOnError.Some exceptions are thrown regardless of the value of throwOnError. Se, ad esempio, il tipo viene trovato ma non può essere caricato TypeLoadException , viene generata un' throwOnError eccezione falseanche se è.For example, if the type is found but cannot be loaded, a TypeLoadException is thrown even if throwOnError is false.

La tabella seguente mostra quali membri di una classe di base vengono restituiti dai Get metodi durante la reflection su un tipo.The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

Tipo di membroMember Type StaticStatic Non staticoNon-Static
CostruttoreConstructor NoNo NoNo
CampoField NoNo Sì.Yes. Un campo è sempre nascosto per nome e firma.A field is always hide-by-name-and-signature.
eventEvent Non applicabileNot applicable La regola Common Type System è che l'ereditarietà è identica a quella dei metodi che implementano la proprietà.The common type system rule is that the inheritance is the same as that of the methods that implement the property. La reflection considera le proprietà come nascoste per nome e firma.Reflection treats properties as hide-by-name-and-signature. Vedere la nota 2 di seguito.See note 2 below.
MetodoMethod NoNo Sì.Yes. Un metodo (sia virtuale che non virtuale) può essere nascosto in base al nome o nascosto per nome e firma.A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
Tipo annidatoNested Type NoNo NoNo
ProprietàProperty Non applicabileNot applicable La regola Common Type System è che l'ereditarietà è identica a quella dei metodi che implementano la proprietà.The common type system rule is that the inheritance is the same as that of the methods that implement the property. La reflection considera le proprietà come nascoste per nome e firma.Reflection treats properties as hide-by-name-and-signature. Vedere la nota 2 di seguito.See note 2 below.
  1. Hide-by-Name-and-signature prende in considerazione tutte le parti della firma, inclusi i modificatori personalizzati, i tipi restituiti, i tipi di parametro, le sentinelle e le convenzioni di chiamata non gestite.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. Si tratta di un confronto binario.This is a binary comparison.

  2. Per la reflection, le proprietà e gli eventi sono nascosti per nome e firma.For reflection, properties and events are hide-by-name-and-signature. Se si dispone di una proprietà con una funzione di accesso get e set nella classe di base, ma la classe derivata dispone solo di una funzione di accesso get, la proprietà della classe derivata nasconde la proprietà della classe base e non sarà possibile accedere al setter sulla classe di 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. Gli attributi personalizzati non fanno parte del Common Type System.Custom attributes are not part of the common type system.

Le matrici o i tipi COM non vengono cercati a meno che non siano già stati caricati nella tabella delle classi disponibili.Arrays or COM types are not searched for unless they have already been loaded into the table of available classes.

typeNamepuò essere il nome del tipo qualificato in base al relativo spazio dei nomi o un nome qualificato dall'assembly che include una specifica del nome dell'assembly.typeName can be the type name qualified by its namespace or an assembly-qualified name that includes an assembly name specification. Vedere AssemblyQualifiedName.See AssemblyQualifiedName.

Se typeName include lo spazio dei nomi ma non il nome dell'assembly, questo metodo esegue la ricerca solo nell'assembly dell'oggetto chiamante e in mscorlib. dll, in questo ordine.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. Se typeName è completo con il nome dell'assembly parziale o completo, questo metodo esegue la ricerca nell'assembly specificato.If typeName is fully qualified with the partial or complete assembly name, this method searches in the specified assembly. Se l'assembly ha un nome sicuro, è necessario specificare un nome di assembly completo.If the assembly has a strong name, a complete assembly name is required.

La AssemblyQualifiedName proprietà restituisce un nome di tipo completo, inclusi i tipi annidati, il nome dell'assembly e gli argomenti generici.The AssemblyQualifiedName property returns a fully qualified type name including nested types, the assembly name, and generic arguments. Tutti i compilatori che supportano il Common Language Runtime genereranno il nome semplice di una classe annidata e la reflection costruirà un nome modificato quando viene eseguita una query, in base alle convenzioni seguenti.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.

Nota

In .NET Framework versione 2,0, l'architettura del processore viene aggiunta all'identità dell'assembly e può essere specificata come parte delle stringhe dei nomi degli 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. Ad esempio, "ProcessorArchitecture = msil".For example, "ProcessorArchitecture=msil". Tuttavia, non è incluso nella stringa restituita dalla AssemblyQualifiedName proprietà, per motivi di compatibilità.However, it is not included in the string returned by the AssemblyQualifiedName property, for compatibility reasons. È anche possibile caricare tipi creando un AssemblyName oggetto e passandolo a un overload appropriato Load del metodo.You can also load types by creating an AssemblyName object and passing it to an appropriate overload of the Load method. È quindi possibile usare il Assembly.GetType metodo per caricare i tipi dall'assembly.You can then use the Assembly.GetType method to load types from the assembly. Vedere anche AssemblyName.ProcessorArchitecture.See also AssemblyName.ProcessorArchitecture.

DelimitatoreDelimiter SignificatoMeaning
Barra rovesciata (\)Backslash (\) Carattere di escape.Escape character.
Apice inverso (')Backtick (`) Precede una o più cifre che rappresentano il numero di parametri di tipo, che si trova alla fine del nome di un tipo generico.Precedes one or more digits representing the number of type parameters, located at the end of the name of a generic type.
Parentesi quadre ([])Brackets ([]) Racchiudere un elenco di argomenti di tipo generico per un tipo generico costruito; all'interno di un elenco di argomenti di tipo, racchiudere un tipo qualificato dall'assembly.Enclose a generic type argument list, for a constructed generic type; within a type argument list, enclose an assembly-qualified type.
Virgola (,)Comma (,) Precede il nome dell'assembly.Precedes the Assembly name.
Punto (.)Period (.) Indica gli identificatori degli spazi dei nomi.Denotes namespace identifiers.
Segno più (+)Plus sign (+) Precede una classe annidata.Precedes a nested class.

Il nome completo di una classe, ad esempio, potrebbe essere simile al seguente:For example, the fully qualified name for a class might look like this:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly  

Se lo spazio dei nomi è namespace. Sub + Namespace, la stringa deve precedere il segno più (+) con un carattere di escape (\) per impedire che venga interpretata come separatore di annidamento.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 reflection genera questa stringa nel modo seguente:Reflection emits this string as follows:

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

"+ +"\Diventa "+\+" e\"" diventa "\\".A "++" becomes "\+\+", and a "\" becomes "\\".

Questo nome completo può essere reso permanente e successivamente usato per caricare Type.This qualified name can be persisted and later used to load the Type. Per cercare e caricare un oggetto Type, usare GetType solo con il nome del tipo o con il nome del tipo completo di assembly.To search for and load a Type, use GetType either with the type name only or with the assembly qualified type name. GetTypecon il nome del tipo, solo l'oggetto Type verrà cercato nell'assembly del chiamante e quindi nell'assembly di sistema.GetType with the type name only will look for the Type in the caller's assembly and then in the System assembly. GetTypecon il nome del tipo completo di assembly cercherà Type in qualsiasi assembly.GetType with the assembly qualified type name will look for the Type in any assembly.

I nomi dei tipi possono includere caratteri finali che indicano informazioni aggiuntive sul tipo, ad esempio se il tipo è un tipo di riferimento, un tipo di puntatore o un tipo di matrice.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. Per recuperare il nome del tipo senza questi caratteri finali, usare t.GetElementType().ToString(), dove t è il tipo.To retrieve the type name without these trailing characters, use t.GetElementType().ToString(), where t is the type.

Gli spazi sono rilevanti in tutti i componenti del nome del tipo, eccetto il nome dell'assembly.Spaces are relevant in all type name components except the assembly name. Nel nome dell'assembly, gli spazi prima del separatore ',' sono rilevanti, ma gli spazi dopo il separatore ',' vengono ignorati.In the assembly name, spaces before the ',' separator are relevant, but spaces after the ',' separator are ignored.

Il nome di un tipo generico termina con un apice inverso`() seguito da cifre che rappresentano il numero di argomenti di tipo generico.The name of a generic type ends with a backtick (`) followed by digits representing the number of generic type arguments. Lo scopo di questo nome è quello di consentire ai compilatori di supportare i tipi generici con lo stesso nome ma con numeri diversi di parametri di tipo, che si verificano nello stesso ambito.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. La reflection, Tuplead esempio, restituisce la tuplaand ``2 con nomi denominati Tuple(Of T) 1 Tuple(Of T0, T1) da metodi generici Tuple<T> e in\<T0, T1> Visual Basic, C#o e tupla in 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#.

Per i tipi generici, l'elenco di argomenti di tipo è racchiuso tra parentesi quadre e gli argomenti di tipo sono separati da virgole.For generic types, the type argument list is enclosed in brackets, and the type arguments are separated by commas. Un generico Dictionary<TKey,TValue> , ad esempio, ha due parametri di tipo.For example, a generic Dictionary<TKey,TValue> has two type parameters. Una Dictionary<TKey,TValue> String di MyType con chiavi di tipo potrebbe essere rappresentata come segue:A Dictionary<TKey,TValue> of MyType with keys of type String might be represented as follows:

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

Per specificare un tipo qualificato dall'assembly all'interno di un elenco di argomenti di tipo, racchiudere il tipo qualificato dall'assembly tra parentesi quadre.To specify an assembly-qualified type within a type argument list, enclose the assembly-qualified type within brackets. In caso contrario, le virgole che separano le parti del nome qualificato dall'assembly vengono interpretate come delimitazione di argomenti di tipo aggiuntivi.Otherwise, the commas that separate the parts of the assembly-qualified name are interpreted as delimiting additional type arguments. Ad esempio, una Dictionary<TKey,TValue> di MyType da MyAssembly. dll, con chiavi di tipo String, può essere specificata come indicato di seguito: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]]")  

Nota

Un tipo qualificato dall'assembly può essere racchiuso tra parentesi quadre solo quando viene visualizzato all'interno di un elenco di parametri di tipo.An assembly-qualified type can be enclosed in brackets only when it appears within a type parameter list. Le regole per la ricerca di assembly per i tipi qualificati e non qualificati negli elenchi di parametri di tipo sono le stesse delle regole per i tipi non generici qualificati e non qualificati.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.

I tipi nullable sono un caso speciale di tipi generici.Nullable types are a special case of generic types. Ad esempio, un Nullable Int32 è rappresentato dalla stringa "System. Nullable ' 1 [System. Int32]".For example, a nullable Int32 is represented by the string "System.Nullable`1[System.Int32]".

Nota

In C#, C++e Visual Basic è anche possibile ottenere tipi nullable usando operatori di tipo.In C#, C++, and Visual Basic you can also get nullable types using type operators. Ad esempio, il tipo Boolean nullable viene restituito da typeof(Nullable<bool>) in C#, da Nullable<Boolean>::typeid in C++e da GetType(Nullable(Of Boolean)) in 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.

Nella tabella seguente viene illustrata la sintassi utilizzata GetType con per diversi tipi.The following table shows the syntax you use with GetType for various types.

Per ottenereTo Get UsaUse
NullableInt32A nullable Int32 Type.GetType("System.Nullable`1[System.Int32]")
Puntatore non gestito aMyTypeAn unmanaged pointer to MyType Type.GetType("MyType*")
Puntatore non gestito a un puntatore aMyTypeAn unmanaged pointer to a pointer to MyType Type.GetType("MyType**")
Un puntatore gestito o un riferimento aMyTypeA managed pointer or reference to MyType Type.GetType("MyType&").Type.GetType("MyType&"). Si noti che, a differenza dei puntatori, i riferimenti sono limitati a un solo livello.Note that unlike pointers, references are limited to one level.
Classe padre e classe annidataA parent class and a nested class Type.GetType("MyParentClass+MyNestedClass")
Matrice unidimensionale con limite inferiore pari a 0A one-dimensional array with a lower bound of 0 Type.GetType("MyArray[]")
Matrice unidimensionale con limite inferiore sconosciutoA one-dimensional array with an unknown lower bound Type.GetType("MyArray[*]")
Matrice n-dimensionaleAn n-dimensional array Una virgola (,) racchiusa tra parentesi quadre per un totale di n-1 volte.A comma (,) inside the brackets a total of n-1 times. Ad esempio, System.Object[,,] rappresenta una matrice tridimensionale Object .For example, System.Object[,,] represents a three-dimensional Object array.
Matrice di una matrice bidimensionaleA two-dimensional array's array Type.GetType("MyArray[][]")
Matrice bidimensionale rettangolare con limiti inferiori sconosciutiA rectangular two-dimensional array with unknown lower bounds Type.GetType("MyArray[,]")
Un tipo generico con un argomento di tipoA generic type with one type argument Type.GetType("MyGenericType`1[MyType]")
Tipo generico con due argomenti di tipoA generic type with two type arguments Type.GetType("MyGenericType`2[MyType,AnotherType]")
Un tipo generico con due argomenti di tipo completo di assemblyA generic type with two assembly-qualified type arguments Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
Un tipo generico qualificato dall'assembly con un argomento di tipo qualificato dall'assemblyAn assembly-qualified generic type with an assembly-qualified type argument Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
Tipo generico il cui argomento di tipo è un tipo generico con due argomenti di tipoA generic type whose type argument is a generic type with two type arguments Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")
Vedi anche

GetType(String, Boolean, Boolean) GetType(String, Boolean, Boolean) GetType(String, Boolean, Boolean) GetType(String, Boolean, Boolean)

Ottiene l'oggetto Type con il nome specificato, che indica se generare un'eccezione quando viene trovato il tipo e se eseguire una ricerca con distinzione tra maiuscole e minuscole.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

Parametri

typeName
String String String String

Nome qualificato dall'assembly del tipo da ottenere.The assembly-qualified name of the type to get. Vedere AssemblyQualifiedName.See AssemblyQualifiedName. Se il tipo è incluso nell'assembly attualmente in esecuzione o in Mscorlib.dll, è sufficiente specificare il nome del tipo qualificato in base al relativo spazio dei nomi.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 Boolean Boolean Boolean

true per generare un'eccezione se non è possibile trovare il tipo; false per restituire null.true to throw an exception if the type cannot be found; false to return null. Se si specifica false vengono eliminate alcune condizioni di eccezione, ma non tutte.Specifying false also suppresses some other exception conditions, but not all of them. Vedere la sezione relativa alle eccezioni.See the Exceptions section.

ignoreCase
Boolean Boolean Boolean Boolean

true per eseguire una ricerca di typeName senza distinzione tra maiuscole minuscole, false per eseguire una ricerca di typeName con distinzione tra maiuscole e minuscole.true to perform a case-insensitive search for typeName, false to perform a case-sensitive search for typeName.

Restituisce

Tipo con il nome specificato.The type with the specified name. Se il tipo non viene trovato, il parametro throwOnError specifica se viene restituito null o se viene generata un'eccezione.If the type is not found, the throwOnError parameter specifies whether null is returned or an exception is thrown. In alcuni casi, viene generata un'eccezione indipendentemente dal valore di throwOnError.In some cases, an exception is thrown regardless of the value of throwOnError. Vedere la sezione relativa alle eccezioni.See the Exceptions section.

Eccezioni

Viene richiamato un inizializzatore di classi e viene generata un'eccezione.A class initializer is invoked and throws an exception.

throwOnError è true e il tipo non è stato trovato.throwOnError is true and the type is not found.

In alternativa-or- throwOnError è true e typeName contiene caratteri non validi, ad esempio una scheda incorporata.throwOnError is true and typeName contains invalid characters, such as an embedded tab. -oppure--or- throwOnError è true e typeName è una stringa vuota.throwOnError is true and typeName is an empty string.

-oppure--or- throwOnError è true e typeName rappresenta un tipo di matrice con una dimensione non valida.throwOnError is true and typeName represents an array type with an invalid size.

-oppure--or- typeName rappresenta una matrice di TypedReference.typeName represents an array of TypedReference.

throwOnError è true e la sintassi di typeName non è valida.throwOnError is true and typeName contains invalid syntax. Ad esempio: "MyType[,*,]".For example, "MyType[,*,]".

-oppure--or- typeName rappresenta un tipo generico che ha un tipo di puntatore, un tipo ByRef o Void tra i relativi argomenti di tipo.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

-oppure--or- typeName rappresenta un tipo generico che ha un numero errato di argomenti di tipo.typeName represents a generic type that has an incorrect number of type arguments.

In alternativa-or- typeName rappresenta un tipo generico e uno dei relativi argomenti di tipo non soddisfa i vincoli per il parametro di tipo corrispondente.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

throwOnError è true e l'assembly o una delle sue dipendenze non è stato trovato.throwOnError is true and the assembly or one of its dependencies was not found.

L'assembly o una delle relative dipendenze è stato trovato, ma non può essere caricato.The assembly or one of its dependencies was found, but could not be loaded.

L'assembly o una delle relative dipendenze non è valido.The assembly or one of its dependencies is not valid.

-oppure--or-

Attualmente è caricata la versione 2.0 o successiva di Common Language Runtime e l'assembly è stato compilato con una versione successiva.Version 2.0 or later of the common language runtime is currently loaded, and the assembly was compiled with a later version.

Commenti

È possibile utilizzare il GetType metodo per ottenere un Type oggetto per un tipo in un altro assembly se si conosce il nome qualificato dall'assembly, che può essere ottenuto AssemblyQualifiedNameda.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. GetTypecausa il caricamento dell'assembly specificato in typeName.GetType causes loading of the assembly specified in typeName. È anche possibile caricare un assembly usando il Assembly.Load metodo, quindi usare il Assembly.GetType metodo o Assembly.GetTypes per ottenere Type gli oggetti.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. Se un tipo si trova in un assembly noto al programma in fase di compilazione, è più efficiente utilizzare typeof in C# o l' GetType operatore in 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.

GetTypefunziona solo su assembly caricati dal disco.GetType only works on assemblies loaded from disk. Se si chiama GetType per cercare un tipo definito in un assembly dinamico definito usando i System.Reflection.Emit servizi, è possibile che si ottenga un comportamento incoerente.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. Il comportamento dipende dal fatto che l'assembly dinamico sia persistente, ovvero creato utilizzando le RunAndSave modalità di accesso o Save dell' System.Reflection.Emit.AssemblyBuilderAccess enumerazione.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. Se l'assembly dinamico è permanente ed è stato scritto su disco prima GetType che venga chiamato, il caricatore trova l'assembly salvato su disco, carica tale assembly e recupera il tipo da tale 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. Se l'assembly non è stato salvato su disco quando GetType viene chiamato, il metodo restituisce null.If the assembly has not been saved to disk when GetType is called, the method returns null. GetTypenon comprende gli assembly dinamici temporanei. Pertanto, la GetType chiamata di per recuperare un tipo in un assembly dinamico nulltemporaneo restituisce un valore.GetType does not understand transient dynamic assemblies; therefore, calling GetType to retrieve a type in a transient dynamic assembly returns null.

Per utilizzare GetType in un modulo dinamico, sottoscrivere l' AppDomain.AssemblyResolve evento e chiamare GetType prima del salvataggio.To use GetType on a dynamic module, subscribe to the AppDomain.AssemblyResolve event and call GetType before saving. In caso contrario, si otterranno due copie dell'assembly in memoria.Otherwise, you will get two copies of the assembly in memory.

Il throwOnError parametro specifica cosa accade quando il tipo non viene trovato ed evita anche determinate altre condizioni di eccezione, come descritto nella sezione eccezioni.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. Alcune eccezioni vengono generate indipendentemente dal valore di throwOnError.Some exceptions are thrown regardless of the value of throwOnError. Se, ad esempio, il tipo viene trovato ma non può essere caricato TypeLoadException , viene generata un' throwOnError eccezione falseanche se è.For example, if the type is found but cannot be loaded, a TypeLoadException is thrown even if throwOnError is false.

La tabella seguente mostra quali membri di una classe di base vengono restituiti dai Get metodi durante la reflection su un tipo.The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

Tipo di membroMember Type StaticStatic Non staticoNon-Static
CostruttoreConstructor NoNo NoNo
CampoField NoNo Sì.Yes. Un campo è sempre nascosto per nome e firma.A field is always hide-by-name-and-signature.
eventEvent Non applicabileNot applicable La regola Common Type System è che l'ereditarietà è identica a quella dei metodi che implementano la proprietà.The common type system rule is that the inheritance is the same as that of the methods that implement the property. La reflection considera le proprietà come nascoste per nome e firma.Reflection treats properties as hide-by-name-and-signature. Vedere la nota 2 di seguito.See note 2 below.
MetodoMethod NoNo Sì.Yes. Un metodo (sia virtuale che non virtuale) può essere nascosto in base al nome o nascosto per nome e firma.A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
Tipo annidatoNested Type NoNo NoNo
ProprietàProperty Non applicabileNot applicable La regola Common Type System è che l'ereditarietà è identica a quella dei metodi che implementano la proprietà.The common type system rule is that the inheritance is the same as that of the methods that implement the property. La reflection considera le proprietà come nascoste per nome e firma.Reflection treats properties as hide-by-name-and-signature. Vedere la nota 2 di seguito.See note 2 below.
  1. Hide-by-Name-and-signature prende in considerazione tutte le parti della firma, inclusi i modificatori personalizzati, i tipi restituiti, i tipi di parametro, le sentinelle e le convenzioni di chiamata non gestite.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. Si tratta di un confronto binario.This is a binary comparison.

  2. Per la reflection, le proprietà e gli eventi sono nascosti per nome e firma.For reflection, properties and events are hide-by-name-and-signature. Se si dispone di una proprietà con una funzione di accesso get e set nella classe di base, ma la classe derivata dispone solo di una funzione di accesso get, la proprietà della classe derivata nasconde la proprietà della classe base e non sarà possibile accedere al setter sulla classe di 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. Gli attributi personalizzati non fanno parte del Common Type System.Custom attributes are not part of the common type system.

Le matrici o i tipi COM non vengono cercati a meno che non siano già stati caricati nella tabella delle classi disponibili.Arrays or COM types are not searched for unless they have already been loaded into the table of available classes.

typeNamepuò essere il nome del tipo qualificato in base al relativo spazio dei nomi o un nome qualificato dall'assembly che include una specifica del nome dell'assembly.typeName can be the type name qualified by its namespace or an assembly-qualified name that includes an assembly name specification. Vedere AssemblyQualifiedName.See AssemblyQualifiedName.

Se typeName include lo spazio dei nomi ma non il nome dell'assembly, questo metodo esegue la ricerca solo nell'assembly dell'oggetto chiamante e in mscorlib. dll, in questo ordine.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. Se typeName è completo con il nome dell'assembly parziale o completo, questo metodo esegue la ricerca nell'assembly specificato.If typeName is fully qualified with the partial or complete assembly name, this method searches in the specified assembly. Se l'assembly ha un nome sicuro, è necessario specificare un nome di assembly completo.If the assembly has a strong name, a complete assembly name is required.

La AssemblyQualifiedName proprietà restituisce un nome di tipo completo, inclusi i tipi annidati, il nome dell'assembly e gli argomenti di tipo.The AssemblyQualifiedName property returns a fully qualified type name including nested types, the assembly name, and type arguments. Tutti i compilatori che supportano il Common Language Runtime genereranno il nome semplice di una classe annidata e la reflection costruirà un nome modificato quando viene eseguita una query, in base alle convenzioni seguenti.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.

Nota

In .NET Framework versione 2,0, l'architettura del processore viene aggiunta all'identità dell'assembly e può essere specificata come parte delle stringhe dei nomi degli 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. Ad esempio, "ProcessorArchitecture = msil".For example, "ProcessorArchitecture=msil". Tuttavia, non è incluso nella stringa restituita dalla AssemblyQualifiedName proprietà, per motivi di compatibilità.However, it is not included in the string returned by the AssemblyQualifiedName property, for compatibility reasons. È anche possibile caricare tipi creando un AssemblyName oggetto e passandolo a un overload appropriato Load del metodo.You can also load types by creating an AssemblyName object and passing it to an appropriate overload of the Load method. È quindi possibile usare il Assembly.GetType metodo per caricare i tipi dall'assembly.You can then use the Assembly.GetType method to load types from the assembly. Vedere anche AssemblyName.ProcessorArchitecture.See also AssemblyName.ProcessorArchitecture.

DelimitatoreDelimiter SignificatoMeaning
Barra rovesciata (\)Backslash (\) Carattere di escape.Escape character.
Apice inverso (')Backtick (`) Precede una o più cifre che rappresentano il numero di parametri di tipo, che si trova alla fine del nome di un tipo generico.Precedes one or more digits representing the number of type parameters, located at the end of the name of a generic type.
Parentesi quadre ([])Brackets ([]) Racchiudere un elenco di argomenti di tipo generico per un tipo generico costruito; all'interno di un elenco di argomenti di tipo, racchiudere un tipo qualificato dall'assembly.Enclose a generic type argument list, for a constructed generic type; within a type argument list, enclose an assembly-qualified type.
Virgola (,)Comma (,) Precede il nome dell'assembly.Precedes the Assembly name.
Punto (.)Period (.) Indica gli identificatori degli spazi dei nomi.Denotes namespace identifiers.
Segno più (+)Plus sign (+) Precede una classe annidata.Precedes a nested class.

Il nome completo di una classe, ad esempio, potrebbe essere simile al seguente:For example, the fully qualified name for a class might look like this:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly  

Se lo spazio dei nomi è namespace. Sub + Namespace, la stringa deve precedere il segno più (+) con un carattere di escape (\) per impedire che venga interpretata come separatore di annidamento.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 reflection genera questa stringa nel modo seguente:Reflection emits this string as follows:

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

"+ +"\Diventa "+\+" e\"" diventa "\\".A "++" becomes "\+\+", and a "\" becomes "\\".

Questo nome completo può essere reso permanente e successivamente usato per caricare Type.This qualified name can be persisted and later used to load the Type. Per cercare e caricare un oggetto Type, usare GetType solo con il nome del tipo o con il nome del tipo completo di assembly.To search for and load a Type, use GetType either with the type name only or with the assembly qualified type name. GetTypecon il nome del tipo, solo l'oggetto Type verrà cercato nell'assembly del chiamante e quindi nell'assembly di sistema.GetType with the type name only will look for the Type in the caller's assembly and then in the System assembly. GetTypecon il nome del tipo completo di assembly cercherà Type in qualsiasi assembly.GetType with the assembly qualified type name will look for the Type in any assembly.

I nomi dei tipi possono includere caratteri finali che indicano informazioni aggiuntive sul tipo, ad esempio se il tipo è un tipo di riferimento, un tipo di puntatore o un tipo di matrice.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. Per recuperare il nome del tipo senza questi caratteri finali, usare t.GetElementType().ToString(), dove t è il tipo.To retrieve the type name without these trailing characters, use t.GetElementType().ToString(), where t is the type.

Gli spazi sono rilevanti in tutti i componenti del nome del tipo, eccetto il nome dell'assembly.Spaces are relevant in all type name components except the assembly name. Nel nome dell'assembly, gli spazi prima del separatore ',' sono rilevanti, ma gli spazi dopo il separatore ',' vengono ignorati.In the assembly name, spaces before the ',' separator are relevant, but spaces after the ',' separator are ignored.

Il nome di un tipo generico termina con un apice inverso`() seguito da cifre che rappresentano il numero di argomenti di tipo generico.The name of a generic type ends with a backtick (`) followed by digits representing the number of generic type arguments. Lo scopo di questo nome è quello di consentire ai compilatori di supportare i tipi generici con lo stesso nome ma con numeri diversi di parametri di tipo, che si verificano nello stesso ambito.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. La reflection, Tuplead esempio, restituisce la tuplaand ``2 con nomi denominati Tuple(Of T) 1 Tuple(Of T0, T1) da metodi generici Tuple<T> e in\<T0, T1> Visual Basic, C#o e tupla in 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#.

Per i tipi generici, l'elenco di argomenti di tipo è racchiuso tra parentesi quadre e gli argomenti di tipo sono separati da virgole.For generic types, the type argument list is enclosed in brackets, and the type arguments are separated by commas. Un generico Dictionary<TKey,TValue> , ad esempio, ha due parametri di tipo.For example, a generic Dictionary<TKey,TValue> has two type parameters. Una Dictionary<TKey,TValue> String di MyType con chiavi di tipo potrebbe essere rappresentata come segue:A Dictionary<TKey,TValue> of MyType with keys of type String might be represented as follows:

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

Per specificare un tipo qualificato dall'assembly all'interno di un elenco di argomenti di tipo, racchiudere il tipo qualificato dall'assembly tra parentesi quadre.To specify an assembly-qualified type within a type argument list, enclose the assembly-qualified type within brackets. In caso contrario, le virgole che separano le parti del nome qualificato dall'assembly vengono interpretate come delimitazione di argomenti di tipo aggiuntivi.Otherwise, the commas that separate the parts of the assembly-qualified name are interpreted as delimiting additional type arguments. Ad esempio, una Dictionary<TKey,TValue> di MyType da MyAssembly. dll, con chiavi di tipo String, può essere specificata come indicato di seguito: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]]")  

Nota

Un tipo qualificato dall'assembly può essere racchiuso tra parentesi quadre solo quando viene visualizzato all'interno di un elenco di parametri di tipo.An assembly-qualified type can be enclosed in brackets only when it appears within a type parameter list. Le regole per la ricerca di assembly per i tipi qualificati e non qualificati negli elenchi di parametri di tipo sono le stesse delle regole per i tipi non generici qualificati e non qualificati.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.

I tipi nullable sono un caso speciale di tipi generici.Nullable types are a special case of generic types. Ad esempio, un Nullable Int32 è rappresentato dalla stringa "System. Nullable ' 1 [System. Int32]".For example, a nullable Int32 is represented by the string "System.Nullable`1[System.Int32]".

Nota

In C#, C++e Visual Basic è anche possibile ottenere tipi nullable usando operatori di tipo.In C#, C++, and Visual Basic you can also get nullable types using type operators. Ad esempio, il tipo Boolean nullable viene restituito da typeof(Nullable<bool>) in C#, da Nullable<Boolean>::typeid in C++e da GetType(Nullable(Of Boolean)) in 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.

Nella tabella seguente viene illustrata la sintassi utilizzata GetType con per diversi tipi.The following table shows the syntax you use with GetType for various types.

Per ottenereTo Get UsaUse
NullableInt32A nullable Int32 Type.GetType("System.Nullable`1[System.Int32]")
Puntatore non gestito aMyTypeAn unmanaged pointer to MyType Type.GetType("MyType*")
Puntatore non gestito a un puntatore aMyTypeAn unmanaged pointer to a pointer to MyType Type.GetType("MyType**")
Un puntatore gestito o un riferimento aMyTypeA managed pointer or reference to MyType Type.GetType("MyType&").Type.GetType("MyType&"). Si noti che, a differenza dei puntatori, i riferimenti sono limitati a un solo livello.Note that unlike pointers, references are limited to one level.
Classe padre e classe annidataA parent class and a nested class Type.GetType("MyParentClass+MyNestedClass")
Matrice unidimensionale con limite inferiore pari a 0A one-dimensional array with a lower bound of 0 Type.GetType("MyArray[]")
Matrice unidimensionale con limite inferiore sconosciutoA one-dimensional array with an unknown lower bound Type.GetType("MyArray[*]")
Matrice n-dimensionaleAn n-dimensional array Una virgola (,) racchiusa tra parentesi quadre per un totale di n-1 volte.A comma (,) inside the brackets a total of n-1 times. Ad esempio, System.Object[,,] rappresenta una matrice tridimensionale Object .For example, System.Object[,,] represents a three-dimensional Object array.
Matrice di una matrice bidimensionaleA two-dimensional array's array Type.GetType("MyArray[][]")
Matrice bidimensionale rettangolare con limiti inferiori sconosciutiA rectangular two-dimensional array with unknown lower bounds Type.GetType("MyArray[,]")
Un tipo generico con un argomento di tipoA generic type with one type argument Type.GetType("MyGenericType`1[MyType]")
Tipo generico con due argomenti di tipoA generic type with two type arguments Type.GetType("MyGenericType`2[MyType,AnotherType]")
Un tipo generico con due argomenti di tipo completo di assemblyA generic type with two assembly-qualified type arguments Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
Un tipo generico qualificato dall'assembly con un argomento di tipo qualificato dall'assemblyAn assembly-qualified generic type with an assembly-qualified type argument Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
Tipo generico il cui argomento di tipo è un tipo generico con due argomenti di tipoA generic type whose type argument is a generic type with two type arguments Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")
Vedi anche

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

Ottiene il tipo con il nome specificato, fornendo facoltativamente metodi personalizzati per risolvere l'assembly e il tipo.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

Parametri

typeName
String String String String

Nome del tipo da ottenere.The name of the type to get. Se viene fornito il parametro typeResolver, il nome del tipo può essere qualsiasi stringa che typeResolver è in grado di risolvere.If the typeResolver parameter is provided, the type name can be any string that typeResolver is capable of resolving. Se viene fornito il parametro assemblyResolver o se viene usata la risoluzione del tipo standard, typeName deve essere un nome qualificato dall'assembly (vedere AssemblyQualifiedName), a meno che il tipo non si trovi nell'assembly attualmente in esecuzione o in Mscorlib.dll, nel qual caso è sufficiente fornire il nome del tipo completo di spazio dei nomi.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>

Metodo che individua e restituisce l'assembly specificato in typeName.A method that locates and returns the assembly that is specified in typeName. Il nome dell'assembly viene passato a assemblyResolver come oggetto AssemblyName.The assembly name is passed to assemblyResolver as an AssemblyName object. Se typeName non contiene il nome di un assembly, assemblyResolver non viene chiamato.If typeName does not contain the name of an assembly, assemblyResolver is not called. Se assemblyResolver non viene fornito, viene eseguita la risoluzione dell'assembly standard.If assemblyResolver is not supplied, standard assembly resolution is performed.

Attenzione   Non passare metodi da chiamanti non noti o non attendibili.Caution Do not pass methods from unknown or untrusted callers. In caso contrario, potrebbe verificarsi un'elevazione di privilegi per codice dannoso.Doing so could result in elevation of privilege for malicious code. Usare solo i metodi forniti o con cui si ha dimestichezza.Use only methods that you provide or that you are familiar with.

typeResolver
Func<Assembly,String,Boolean,Type>

Metodo che individua e restituisce il tipo specificato da typeName dall'assembly restituito da assemblyResolver o dalla risoluzione dell'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. Se non viene fornito alcun assembly, il metodo typeResolver può fornirne uno.If no assembly is provided, the typeResolver method can provide one. Il metodo accetta inoltre un parametro che specifica se eseguire una ricerca senza fare distinzione tra maiuscole e minuscole. false viene passato al parametro.The method also takes a parameter that specifies whether to perform a case-insensitive search; false is passed to that parameter.

Attenzione   Non passare metodi da chiamanti non noti o non attendibili.Caution Do not pass methods from unknown or untrusted callers.

Restituisce

Tipo con il nome specificato, oppure null se il tipo non viene trovato.The type with the specified name, or null if the type is not found.

Eccezioni

Viene richiamato un inizializzatore di classi e viene generata un'eccezione.A class initializer is invoked and throws an exception.

Si verifica un errore quando typeName viene analizzato in un nome di tipo e un nome di assembly (ad esempio, quando il nome di tipo semplice include un carattere speciale senza escape).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).

In alternativa-or- typeName rappresenta un tipo generico che ha un tipo di puntatore, un tipo ByRef o Void tra i relativi argomenti di tipo.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

-oppure--or- typeName rappresenta un tipo generico che ha un numero errato di argomenti di tipo.typeName represents a generic type that has an incorrect number of type arguments.

-oppure--or- typeName rappresenta un tipo generico e uno dei relativi argomenti di tipo non soddisfa i vincoli per il parametro di tipo corrispondente.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

typeName rappresenta una matrice di TypedReference.typeName represents an array of TypedReference.

L'assembly o una delle relative dipendenze è stato trovato, ma non può essere caricato.The assembly or one of its dependencies was found, but could not be loaded.

-oppure--or- typeName contiene un nome di assembly non valido.typeName contains an invalid assembly name.

-oppure--or- typeName è un nome di assembly valido senza un nome di tipo.typeName is a valid assembly name without a type name.

L'assembly o una delle relative dipendenze non è valido.The assembly or one of its dependencies is not valid.

-oppure--or-

L'assembly è stato compilato con una versione successiva di Common Language Runtime rispetto alla versione attualmente caricata.The assembly was compiled with a later version of the common language runtime than the version that is currently loaded.

Commenti

Gli scenari di utilizzo per questo metodo e i assemblyResolver Dettagli typeResolver sui parametri e sono disponibili nell' GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) overload del metodo.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.

Nota

Se typeName non viene trovato, la chiamata GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) al metodo restituisce null.If typeName cannot be found, the call to the GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) method returns null. Non genera un'eccezione.It does not throw an exception. Per controllare se viene generata un'eccezione, chiamare un overload del GetType metodo che ha un throwOnError parametro.To control whether an exception is thrown, call an overload of the GetType method that has a throwOnError parameter.

La chiamata a questo overload del metodo equivale a chiamare GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) l'overload del metodo false e a throwOnError specificare ignoreCase per i parametri e.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) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean)

Ottiene il tipo con il nome specificato, indicando se generare un'eccezione se il tipo non viene trovato e fornendo facoltativamente metodi personalizzati per risolvere l'assembly e il tipo.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

Parametri

typeName
String String String String

Nome del tipo da ottenere.The name of the type to get. Se viene fornito il parametro typeResolver, il nome del tipo può essere qualsiasi stringa che typeResolver è in grado di risolvere.If the typeResolver parameter is provided, the type name can be any string that typeResolver is capable of resolving. Se viene fornito il parametro assemblyResolver o se viene usata la risoluzione del tipo standard, typeName deve essere un nome qualificato dall'assembly (vedere AssemblyQualifiedName), a meno che il tipo non si trovi nell'assembly attualmente in esecuzione o in Mscorlib.dll, nel qual caso è sufficiente fornire il nome del tipo completo di spazio dei nomi.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>

Metodo che individua e restituisce l'assembly specificato in typeName.A method that locates and returns the assembly that is specified in typeName. Il nome dell'assembly viene passato a assemblyResolver come oggetto AssemblyName.The assembly name is passed to assemblyResolver as an AssemblyName object. Se typeName non contiene il nome di un assembly, assemblyResolver non viene chiamato.If typeName does not contain the name of an assembly, assemblyResolver is not called. Se assemblyResolver non viene fornito, viene eseguita la risoluzione dell'assembly standard.If assemblyResolver is not supplied, standard assembly resolution is performed.

Attenzione   Non passare metodi da chiamanti non noti o non attendibili.Caution Do not pass methods from unknown or untrusted callers. In caso contrario, potrebbe verificarsi un'elevazione di privilegi per codice dannoso.Doing so could result in elevation of privilege for malicious code. Usare solo i metodi forniti o con cui si ha dimestichezza.Use only methods that you provide or that you are familiar with.

typeResolver
Func<Assembly,String,Boolean,Type>

Metodo che individua e restituisce il tipo specificato da typeName dall'assembly restituito da assemblyResolver o dalla risoluzione dell'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. Se non viene fornito alcun assembly, il metodo può fornirne uno.If no assembly is provided, the method can provide one. Il metodo accetta inoltre un parametro che specifica se eseguire una ricerca senza fare distinzione tra maiuscole e minuscole. false viene passato al parametro.The method also takes a parameter that specifies whether to perform a case-insensitive search; false is passed to that parameter.

Attenzione   Non passare metodi da chiamanti non noti o non attendibili.Caution Do not pass methods from unknown or untrusted callers.

throwOnError
Boolean Boolean Boolean Boolean

true per generare un'eccezione se non è possibile trovare il tipo; false per restituire null.true to throw an exception if the type cannot be found; false to return null. Se si specifica false vengono eliminate alcune condizioni di eccezione, ma non tutte.Specifying false also suppresses some other exception conditions, but not all of them. Vedere la sezione relativa alle eccezioni.See the Exceptions section.

Restituisce

Tipo con il nome specificato.The type with the specified name. Se il tipo non viene trovato, il parametro throwOnError specifica se viene restituito null o se viene generata un'eccezione.If the type is not found, the throwOnError parameter specifies whether null is returned or an exception is thrown. In alcuni casi, viene generata un'eccezione indipendentemente dal valore di throwOnError.In some cases, an exception is thrown regardless of the value of throwOnError. Vedere la sezione relativa alle eccezioni.See the Exceptions section.

Eccezioni

Viene richiamato un inizializzatore di classi e viene generata un'eccezione.A class initializer is invoked and throws an exception.

throwOnError è true e il tipo non è stato trovato.throwOnError is true and the type is not found.

In alternativa-or- throwOnError è true e typeName contiene caratteri non validi, ad esempio una scheda incorporata.throwOnError is true and typeName contains invalid characters, such as an embedded tab. -oppure--or- throwOnError è true e typeName è una stringa vuota.throwOnError is true and typeName is an empty string.

In alternativa-or- throwOnError è true e typeName rappresenta un tipo di matrice con una dimensione non valida.throwOnError is true and typeName represents an array type with an invalid size.

-oppure--or- typeName rappresenta una matrice di TypedReference.typeName represents an array of TypedReference.

Si verifica un errore quando typeName viene analizzato in un nome di tipo e un nome di assembly (ad esempio, quando il nome di tipo semplice include un carattere speciale senza escape).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).

-oppure--or- throwOnError è true e typeName contiene sintassi non valida (ad esempio, "MyType[,*,]").throwOnError is true and typeName contains invalid syntax (for example, "MyType[,*,]").

-oppure--or- typeName rappresenta un tipo generico che ha un tipo di puntatore, un tipo ByRef o Void tra i relativi argomenti di tipo.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

-oppure--or- typeName rappresenta un tipo generico che ha un numero errato di argomenti di tipo.typeName represents a generic type that has an incorrect number of type arguments.

-oppure--or- typeName rappresenta un tipo generico e uno dei relativi argomenti di tipo non soddisfa i vincoli per il parametro di tipo corrispondente.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

throwOnError è true e l'assembly o una delle sue dipendenze non è stato trovato.throwOnError is true and the assembly or one of its dependencies was not found.

In alternativa-or- typeName contiene un nome di assembly non valido.typeName contains an invalid assembly name.

-oppure--or- typeName è un nome di assembly valido senza un nome di tipo.typeName is a valid assembly name without a type name.

L'assembly o una delle relative dipendenze è stato trovato, ma non può essere caricato.The assembly or one of its dependencies was found, but could not be loaded.

L'assembly o una delle relative dipendenze non è valido.The assembly or one of its dependencies is not valid.

-oppure--or-

L'assembly è stato compilato con una versione successiva di Common Language Runtime rispetto alla versione attualmente caricata.The assembly was compiled with a later version of the common language runtime than the version that is currently loaded.

Commenti

Gli scenari di utilizzo per questo metodo e i assemblyResolver Dettagli typeResolver sui parametri e sono disponibili nell' GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) overload del metodo.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.

La chiamata a questo overload del metodo equivale a chiamare GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) l'overload del metodo false e a ignoreCase specificare per il parametro.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) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean)

Ottiene il tipo con il nome specificato, indicando se eseguire una ricerca facendo distinzione tra maiuscole e minuscole e se generare un'eccezione se il tipo non viene trovato e fornendo facoltativamente metodi personalizzati per risolvere l'assembly e il tipo.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

Parametri

typeName
String String String String

Nome del tipo da ottenere.The name of the type to get. Se viene fornito il parametro typeResolver, il nome del tipo può essere qualsiasi stringa che typeResolver è in grado di risolvere.If the typeResolver parameter is provided, the type name can be any string that typeResolver is capable of resolving. Se viene fornito il parametro assemblyResolver o se viene usata la risoluzione del tipo standard, typeName deve essere un nome qualificato dall'assembly (vedere AssemblyQualifiedName), a meno che il tipo non si trovi nell'assembly attualmente in esecuzione o in Mscorlib.dll, nel qual caso è sufficiente fornire il nome del tipo completo di spazio dei nomi.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>

Metodo che individua e restituisce l'assembly specificato in typeName.A method that locates and returns the assembly that is specified in typeName. Il nome dell'assembly viene passato a assemblyResolver come oggetto AssemblyName.The assembly name is passed to assemblyResolver as an AssemblyName object. Se typeName non contiene il nome di un assembly, assemblyResolver non viene chiamato.If typeName does not contain the name of an assembly, assemblyResolver is not called. Se assemblyResolver non viene fornito, viene eseguita la risoluzione dell'assembly standard.If assemblyResolver is not supplied, standard assembly resolution is performed.

Attenzione   Non passare metodi da chiamanti non noti o non attendibili.Caution Do not pass methods from unknown or untrusted callers. In caso contrario, potrebbe verificarsi un'elevazione di privilegi per codice dannoso.Doing so could result in elevation of privilege for malicious code. Usare solo i metodi forniti o con cui si ha dimestichezza.Use only methods that you provide or that you are familiar with.

typeResolver
Func<Assembly,String,Boolean,Type>

Metodo che individua e restituisce il tipo specificato da typeName dall'assembly restituito da assemblyResolver o dalla risoluzione dell'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. Se non viene fornito alcun assembly, il metodo può fornirne uno.If no assembly is provided, the method can provide one. Il metodo accetta inoltre un parametro che specifica se eseguire una ricerca senza fare distinzione tra maiuscole e minuscole. Il valore di ignoreCase viene passato al parametro.The method also takes a parameter that specifies whether to perform a case-insensitive search; the value of ignoreCase is passed to that parameter.

Attenzione   Non passare metodi da chiamanti non noti o non attendibili.Caution Do not pass methods from unknown or untrusted callers.

throwOnError
Boolean Boolean Boolean Boolean

true per generare un'eccezione se non è possibile trovare il tipo; false per restituire null.true to throw an exception if the type cannot be found; false to return null. Se si specifica false vengono eliminate alcune condizioni di eccezione, ma non tutte.Specifying false also suppresses some other exception conditions, but not all of them. Vedere la sezione relativa alle eccezioni.See the Exceptions section.

ignoreCase
Boolean Boolean Boolean Boolean

true per eseguire una ricerca di typeName senza distinzione tra maiuscole minuscole, false per eseguire una ricerca di typeName con distinzione tra maiuscole e minuscole.true to perform a case-insensitive search for typeName, false to perform a case-sensitive search for typeName.

Restituisce

Tipo con il nome specificato.The type with the specified name. Se il tipo non viene trovato, il parametro throwOnError specifica se viene restituito null o se viene generata un'eccezione.If the type is not found, the throwOnError parameter specifies whether null is returned or an exception is thrown. In alcuni casi, viene generata un'eccezione indipendentemente dal valore di throwOnError.In some cases, an exception is thrown regardless of the value of throwOnError. Vedere la sezione relativa alle eccezioni.See the Exceptions section.

Eccezioni

Viene richiamato un inizializzatore di classi e viene generata un'eccezione.A class initializer is invoked and throws an exception.

throwOnError è true e il tipo non è stato trovato.throwOnError is true and the type is not found.

In alternativa-or- throwOnError è true e typeName contiene caratteri non validi, ad esempio una scheda incorporata.throwOnError is true and typeName contains invalid characters, such as an embedded tab. -oppure--or- throwOnError è true e typeName è una stringa vuota.throwOnError is true and typeName is an empty string.

In alternativa-or- throwOnError è true e typeName rappresenta un tipo di matrice con una dimensione non valida.throwOnError is true and typeName represents an array type with an invalid size.

In alternativa-or- typeName rappresenta una matrice di TypedReference.typeName represents an array of TypedReference.

Si verifica un errore quando typeName viene analizzato in un nome di tipo e un nome di assembly (ad esempio, quando il nome di tipo semplice include un carattere speciale senza escape).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).

-oppure--or- throwOnError è true e typeName contiene sintassi non valida (ad esempio, "MyType[,*,]").throwOnError is true and typeName contains invalid syntax (for example, "MyType[,*,]").

-oppure--or- typeName rappresenta un tipo generico che ha un tipo di puntatore, un tipo ByRef o Void tra i relativi argomenti di tipo.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

-oppure--or- typeName rappresenta un tipo generico che ha un numero errato di argomenti di tipo.typeName represents a generic type that has an incorrect number of type arguments.

In alternativa-or- typeName rappresenta un tipo generico e uno dei relativi argomenti di tipo non soddisfa i vincoli per il parametro di tipo corrispondente.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

throwOnError è true e l'assembly o una delle sue dipendenze non è stato trovato.throwOnError is true and the assembly or one of its dependencies was not found.

L'assembly o una delle relative dipendenze è stato trovato, ma non può essere caricato.The assembly or one of its dependencies was found, but could not be loaded.

-oppure--or- typeName contiene un nome di assembly non valido.typeName contains an invalid assembly name.

-oppure--or- typeName è un nome di assembly valido senza un nome di tipo.typeName is a valid assembly name without a type name.

L'assembly o una delle relative dipendenze non è valido.The assembly or one of its dependencies is not valid.

In alternativa-or-

L'assembly è stato compilato con una versione successiva di Common Language Runtime rispetto alla versione attualmente caricata.The assembly was compiled with a later version of the common language runtime than the version that is currently loaded.

Commenti

Utilizzare questo overload del metodo e i relativi overload associati (GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) e GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean)) per sostituire GetType l'implementazione predefinita del metodo con implementazioni più flessibili.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. Fornendo metodi personalizzati che consentono di risolvere i nomi dei tipi e i nomi degli assembly che li contengono, è possibile eseguire le operazioni seguenti:By providing your own methods that resolve type names and the names of the assemblies that contain them, you can do the following:

  • Consente di controllare la versione di un assembly da cui viene caricato un tipo.Control which version of an assembly a type is loaded from.

  • Fornire un'altra posizione in cui cercare un nome di tipo che non includa un nome di assembly.Provide another place to look for a type name that does not include an assembly name.

  • Caricare assembly usando nomi di assembly parziali.Load assemblies using partial assembly names.

  • Restituire le sottoclassi di System.Type che non vengono create dal Common Language Runtime (CLR).Return subclasses of System.Type that are not created by the common language runtime (CLR).

Ad esempio, nella serializzazione a tolleranza di versione questo metodo consente di cercare un assembly "Best Fit" usando un nome parziale.For example, in version-tolerant serialization this method enables you to search for a "best fit" assembly by using a partial name. Altri overload del GetType metodo richiedono un nome di tipo qualificato dall'assembly, che include il numero di versione.Other overloads of the GetType method require an assembly-qualified type name, which includes the version number.

È possibile che le implementazioni alternative del sistema di tipi debbano restituire sottoclassi di System.Type che non vengono create da CLR; tutti i tipi restituiti da altri overload GetType del metodo sono tipi di Runtime.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.

Note sull'utilizzoUsage Notes

Questo overload del metodo e i relativi overload associati analizzano typeName il nome di un tipo e il nome di un assembly e quindi risolvono i nomi.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 risoluzione del nome dell'assembly viene eseguita prima della risoluzione del nome del tipo, perché è necessario risolvere un nome di tipo nel contesto di 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.

Nota

Se non si ha familiarità con il concetto di nomi di tipo completi di assembly, AssemblyQualifiedName vedere la proprietà.If you are unfamiliar with the concept of assembly-qualified type names, see the AssemblyQualifiedName property.

Se typeName non è un nome qualificato dall'assembly, la risoluzione dell'assembly viene ignorata.If typeName is not an assembly-qualified name, assembly resolution is skipped. I nomi di tipo non qualificati possono essere risolti nel contesto di mscorlib. dll o dell'assembly attualmente in esecuzione oppure è possibile specificare facoltativamente un assembly nel typeResolver parametro.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. Gli effetti dell'inclusione o dell'omissione del nome dell'assembly per diversi tipi di risoluzione dei nomi vengono visualizzati come una tabella nella sezione relativa alla risoluzione dei nomi misti .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.

Note generali sull'utilizzo:General usage notes:

  • Non passare metodi a assemblyResolver o typeResolver se provengono da chiamanti sconosciuti o non attendibili.Do not pass methods to assemblyResolver or typeResolver if they come from unknown or untrusted callers. Usare solo i metodi forniti o con cui si ha dimestichezza.Use only methods that you provide or that you are familiar with.

    Attenzione

    L'uso di metodi di chiamanti sconosciuti o non attendibili potrebbe causare l'elevazione dei privilegi per il codice dannoso.Using methods from unknown or untrusted callers could result in elevation of privilege for malicious code.

  • Se si omettono assemblyResolver i parametri e typeResolver /o throwOnError , il valore del parametro viene passato ai metodi che eseguono la risoluzione predefinita.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.

  • Se throwOnError è typeResolver null assemblyResolver null, questo metodo genera un' TypeLoadException eccezione quando restituisce e un FileNotFoundException oggetto quando restituisce. trueIf throwOnError is true, this method throws a TypeLoadException when typeResolver returns null, and a FileNotFoundException when assemblyResolver returns null.

  • Questo metodo non intercetta le eccezioni generate assemblyResolver da typeResolvere.This method does not catch exceptions thrown by assemblyResolver and typeResolver. L'utente è responsabile di tutte le eccezioni generate dai metodi del resolver.You are responsible for any exceptions that are thrown by the resolver methods.

Risoluzione degli assemblyResolving Assemblies

Il assemblyResolver metodo riceve un AssemblyName oggetto, che viene prodotto analizzando il nome dell'assembly stringa incluso in typeName.The assemblyResolver method receives an AssemblyName object, which is produced by parsing the string assembly name that is included in typeName. Se typeName non contiene un nome di assembly, assemblyResolver non viene chiamato e null viene passato a typeResolver.If typeName does not contain an assembly name, assemblyResolver is not called and null is passed to typeResolver.

Se assemblyResolver non viene specificato, viene usato il sondaggio di assembly standard per individuare l'assembly.If assemblyResolver is not supplied, standard assembly probing is used to locate the assembly. Se assemblyResolver viene specificato, il GetType metodo non esegue il probe standard. in tal caso, assemblyResolver è necessario assicurarsi che sia in grado di gestire tutti gli assembly passati.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.

Il assemblyResolver metodo deve restituire null se l'assembly non può essere risolto.The assemblyResolver method should return null if the assembly cannot be resolved. Se assemblyResolver restituisce FileNotFoundException true throwOnError , non viene chiamato e non viene eseguita alcuna ulteriore elaborazione; inoltre, se è, viene generata un'eccezione. typeResolver nullIf assemblyResolver returns null, typeResolver is not called and no further processing occurs; additionally, if throwOnError is true, a FileNotFoundException is thrown.

Se l' AssemblyName oggetto passato a assemblyResolver è un nome parziale, una o più delle relative parti sono null.If the AssemblyName that is passed to assemblyResolver is a partial name, one or more of its parts are null. Se, ad esempio, non è disponibile alcuna versione Version , la nullproprietà è.For example, if it has no version, the Version property is null. Se la Version proprietà, la CultureInfo proprietà e il GetPublicKeyToken metodo restituiscono nulltutti, viene fornito solo il nome semplice dell'assembly.If the Version property, the CultureInfo property, and the GetPublicKeyToken method all return null, then only the simple name of the assembly was supplied. Il assemblyResolver metodo può utilizzare o ignorare tutte le parti del nome dell'assembly.The assemblyResolver method can use or ignore all parts of the assembly name.

Gli effetti delle diverse opzioni di risoluzione degli assembly vengono visualizzati come una tabella nella sezione relativa alla risoluzione dei nomi misti , per i nomi di tipo semplice e completo di 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.

Risoluzione dei tipiResolving Types

Se typeName non specifica un nome di assembly, typeResolver viene sempre chiamato.If typeName does not specify an assembly name, typeResolver is always called. Se typeName specifica un nome di assembly typeResolver , viene chiamato solo quando il nome dell'assembly viene risolto correttamente.If typeName specifies an assembly name, typeResolver is called only when the assembly name is successfully resolved. Se assemblyResolver o il probe dell'assembly nullstandard typeResolver restituisce, non viene chiamato.If assemblyResolver or standard assembly probing returns null, typeResolver is not called.

Il typeResolver metodo riceve tre argomenti:The typeResolver method receives three arguments:

  • Assembly in cui eseguire la null ricerca typeName o se non contiene un nome di assembly.The assembly to search or null if typeName does not contain an assembly name.

  • Nome semplice del tipo.The simple name of the type. Nel caso di un tipo annidato, questo è il tipo contenitore più esterno.In the case of a nested type, this is the outermost containing type. Nel caso di un tipo generico, si tratta del nome semplice del tipo generico.In the case of a generic type, this is the simple name of the generic type.

  • Valore booleano che è true se la distinzione tra maiuscole e minuscole dei nomi dei tipi deve essere ignorata.A Boolean value that is true if the case of type names is to be ignored.

L'implementazione determina la modalità di utilizzo di questi argomenti.The implementation determines the way these arguments are used. Il typeResolver metodo deve restituire null se non è in grado di risolvere il tipo.The typeResolver method should return null if it cannot resolve the type. Se typeResolver restituisce null e èthrowOnError GetType , questo overload di genera un'TypeLoadExceptioneccezione. trueIf typeResolver returns null and throwOnError is true, this overload of GetType throws a TypeLoadException.

Gli effetti delle diverse opzioni di risoluzione dei tipi vengono visualizzati come una tabella nella sezione relativa alla risoluzione dei nomi misti , per i nomi di tipo semplice e completo di 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.

Risoluzione di tipi annidatiResolving Nested Types

Se typeName è un tipo annidato, solo il nome del tipo contenitore più esterno viene passato typeResolvera.If typeName is a nested type, only the name of the outermost containing type is passed to typeResolver. Quando typeResolver restituisce questo tipo, il GetNestedType metodo viene chiamato in modo ricorsivo finché il tipo annidato più interno non è stato risolto.When typeResolver returns this type, the GetNestedType method is called recursively until the innermost nested type has been resolved.

Risoluzione di tipi genericiResolving Generic Types

Viene GetType chiamato in modo ricorsivo per risolvere i tipi generici: Prima di tutto risolvere il tipo generico e quindi risolverne gli argomenti di tipo.The GetType is called recursively to resolve generic types: First to resolve the generic type itself, and then to resolve its type arguments. Se un argomento di tipo è generico GetType , viene chiamato in modo ricorsivo per risolvere i relativi argomenti di tipo e così via.If a type argument is generic, GetType is called recursively to resolve its type arguments, and so on.

La combinazione di assemblyResolver e typeResolver fornita deve essere in grado di risolvere tutti i livelli di questa ricorsione.The combination of assemblyResolver and typeResolver that you provide must be capable of resolving all levels of this recursion. Si supponga, ad esempio, di assemblyResolver fornire un oggetto che controlla MyAssemblyil caricamento di.For example, suppose you supply an assemblyResolver that controls the loading of MyAssembly. Si supponga di voler risolvere il tipo Dictionary<string, MyType> generico (Dictionary(Of String, MyType) in Visual Basic).Suppose you want to resolve the generic type Dictionary<string, MyType> (Dictionary(Of String, MyType) in Visual Basic). È possibile passare il nome di tipo generico seguente:You might pass the following generic type name:

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

Si noti MyType che è l'unico argomento di tipo qualificato dall'assembly.Notice that MyType is the only assembly-qualified type argument. I nomi delle Dictionary<TKey,TValue> classi e String non sono qualificati per l'assembly.The names of the Dictionary<TKey,TValue> and String classes are not assembly-qualified. È typeResolver necessario che il sia in grado di gestire nullun assembly o, perché null riceverà Stringper Dictionary<TKey,TValue> e.Your typeResolver must be able handle either an assembly or null, because it will receive null for Dictionary<TKey,TValue> and String. Può gestire questa situazione chiamando un overload del GetType metodo che accetta una stringa, perché entrambi i nomi di tipo non qualificati si trovano in 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)
                     ); 

Il assemblyResolver metodo non viene chiamato per il tipo di dizionario e il tipo stringa, perché i nomi dei tipi non sono qualificati per l'assembly.The assemblyResolver method is not called for the dictionary type and the string type, because those type names are not assembly-qualified.

Si supponga ora che anziché System.String, il primo tipo di argomento generico YourTypesia, YourAssemblyda: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]]"  

Poiché questo assembly non è né mscorlib. dll né l'assembly attualmente in esecuzione, non è YourType possibile risolvere senza un nome qualificato dall'assembly.Because this assembly is neither Mscorlib.dll nor the currently executing assembly, you cannot resolve YourType without an assembly-qualified name. Poiché il assemblyResolve verrà chiamato in modo ricorsivo, deve essere in grado di gestire questo caso.Because your assemblyResolve will be called recursively, it must be able to handle this case. Anziché restituire null per gli assembly diversi da MyAssembly, ora esegue un caricamento dell'assembly utilizzando l'oggetto AssemblyName fornito.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
                      ); 

Torna alle Note sull'utilizzo.Back to Usage Notes.

Risoluzione dei nomi dei tipi con caratteri specialiResolving Type Names with Special Characters

Alcuni caratteri hanno significati speciali nei nomi qualificati dall'assembly.Certain characters have special meanings in assembly-qualified names. Se un nome di tipo semplice contiene questi caratteri, i caratteri generano errori di analisi quando il nome semplice fa parte di un nome qualificato dall'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. Per evitare gli errori di analisi, è necessario eseguire l'escape dei caratteri speciali con una barra rovesciata prima di poter passare il nome qualificato GetType dall'assembly al metodo.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. Se, ad esempio, un tipo è Strange]Typedenominato, il carattere di escape deve essere aggiunto davanti alla parentesi quadra come segue 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.

Nota

I nomi con caratteri speciali di questo tipo non possono essere C#creati in Visual Basic o, ma possono essere creati tramite Microsoft Intermediate Language (MSIL) o mediante l'emissione di assembly dinamici.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.

Nella tabella seguente vengono illustrati i caratteri speciali per i nomi dei tipi.The following table shows the special characters for type names.

CarattereCharacter SignificatoMeaning
,virgole, (comma) Delimitatore per i nomi completi di assembly.Delimiter for assembly-qualified names.
[](parentesi quadre)[] (square brackets) Come coppia di suffissi, indica un tipo di matrice. come coppia di delimitatori, racchiude gli elenchi di argomenti generici e i nomi completi di assembly.As a suffix pair, indicates an array type; as a delimiter pair, encloses generic argument lists and assembly-qualified names.
&e commerciale& (ampersand) Come suffisso, indica che un tipo è un tipo di riferimento.As a suffix, indicates that a type is a reference type.
*asterisco* (asterisk) Come suffisso, indica che un tipo è un tipo di puntatore.As a suffix, indicates that a type is a pointer type.
+più+ (plus) Delimitatore per i tipi annidati.Delimiter for nested types.
\barra rovesciata\ (backslash) Carattere di escape.Escape character.

Le proprietà come AssemblyQualifiedName restituiscono stringhe con caratteri di escape corretti.Properties such as AssemblyQualifiedName return correctly escaped strings. È necessario passare correttamente le GetType stringhe con caratteri di escape al metodo.You must pass correctly escaped strings to the GetType method. A sua volta, GetType il metodo passa correttamente i nomi con typeResolver caratteri di escape a e ai metodi di risoluzione dei tipi predefiniti.In turn, the GetType method passes correctly escaped names to typeResolver and to the default type resolution methods. Se è necessario confrontare un nome con un nome non preceduto da un typeResolvercarattere di escape in, è necessario rimuovere i caratteri di escape.If you need to compare a name to an unescaped name in typeResolver, you must remove the escape characters.

Torna alle Note sull'utilizzo.Back to Usage Notes.

Risoluzione dei nomi mistaMixed Name Resolution

Nella tabella seguente sono riepilogate le interazioni assemblyResolvertra typeResolver, e la risoluzione dei nomi predefinita, per tutte le combinazioni di nome del tipo typeNamee nome dell'assembly in:The following table summarizes the interactions between assemblyResolver, typeResolver, and default name resolution, for all combinations of type name and assembly name in typeName:

Contenuto del nome del tipoContents of type name Metodo resolver assemblyAssembly resolver method Metodo resolver del tipoType resolver method RisultatoResult
tipo, assemblytype, assembly Nullnull Nullnull Equivale a chiamare l' Type.GetType(String, Boolean, Boolean) overload del metodo.Equivalent to calling the Type.GetType(String, Boolean, Boolean) method overload.
tipo, assemblytype, assembly fornitoprovided Nullnull assemblyResolverRestituisce l'assembly oppure restituisce null se non è in grado di risolvere l'assembly.assemblyResolver returns the assembly or returns null if it cannot resolve the assembly. Se l'assembly viene risolto, viene Assembly.GetType(String, Boolean, Boolean) utilizzato l'overload del metodo per caricare il tipo dall'assembly; in caso contrario, non viene eseguito alcun tentativo di risoluzione del tipo.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.
tipo, assemblytype, assembly Nullnull fornitoprovided Equivale a convertire il nome dell'assembly in AssemblyName un oggetto e chiamare Assembly.Load(AssemblyName) l'overload del metodo per ottenere l'assembly.Equivalent to converting the assembly name to an AssemblyName object and calling the Assembly.Load(AssemblyName) method overload to get the assembly. Se l'assembly viene risolto, viene passato a typeResolver; in caso contrario, typeResolver non viene chiamato e non viene eseguito un ulteriore tentativo di risoluzione del tipo.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.
tipo, assemblytype, assembly fornitoprovided fornitoprovided assemblyResolverRestituisce l'assembly oppure restituisce null se non è in grado di risolvere l'assembly.assemblyResolver returns the assembly or returns null if it cannot resolve the assembly. Se l'assembly viene risolto, viene passato a typeResolver; in caso contrario, typeResolver non viene chiamato e non viene eseguito un ulteriore tentativo di risoluzione del tipo.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.
tipotype null, fornitonull, provided Nullnull Equivale a chiamare l' Type.GetType(String, Boolean, Boolean) overload del metodo.Equivalent to calling the Type.GetType(String, Boolean, Boolean) method overload. Poiché il nome dell'assembly non è specificato, viene eseguita la ricerca solo in mscorlib. dll e nell'assembly attualmente in esecuzione.Because the assembly name is not provided, only Mscorlib.dll and the currently executing assembly are searched. Se assemblyResolver viene specificato, viene ignorato.If assemblyResolver is provided, it is ignored.
tipotype null, fornitonull, provided fornitoprovided typeResolverviene chiamato e null viene passato per l'assembly.typeResolver is called, and null is passed for the assembly. typeResolverpuò fornire un tipo da qualsiasi assembly, inclusi gli assembly caricati per lo scopo.typeResolver can provide a type from any assembly, including assemblies it loads for the purpose. Se assemblyResolver viene specificato, viene ignorato.If assemblyResolver is provided, it is ignored.
assemblyassembly null, fornitonull, provided null, fornitonull, provided Viene FileLoadException generata un'eccezione, perché il nome dell'assembly viene analizzato come se fosse un nome di tipo qualificato dall'assembly.A FileLoadException is thrown, because the assembly name is parsed as if it were an assembly-qualified type name. In questo modo si ottiene un nome di assembly non valido.This results in an invalid assembly name.

Torna a: Note sull'utilizzo, risoluzione degli assembly, risoluzione dei tipi.Back to: Usage Notes, Resolving Assemblies, Resolving Types.

Si applica a