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

Definição

Obtém um objeto Type que representa o tipo especificado.Gets a Type object that represents the specified type.

Sobrecargas

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

Obtém o Type atual.Gets the current Type.

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

Obtém o Type com o nome especificado, com a execução de uma pesquisa que diferencia maiúsculas de minúsculas.Gets the Type with the specified name, performing a case-sensitive search.

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

Obtém o Type com o nome especificado, realizando uma pesquisa que diferencia minúsculas e maiúsculas e especificando se deve ou não lançar uma exceção se o tipo não for encontrado.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)

Obtém o Type com o nome especificado, especificando se deve ou não lançar uma exceção se o tipo não for encontrado e se deseja executar uma pesquisa diferenciando maiúsculas de minúsculas.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>)

Obtém o tipo com o nome especificado, fornecendo opcionalmente métodos personalizados para resolver o assembly e o 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)

Obtém o tipo com o nome definido, especificando se deverá ser lançada uma exceção se o tipo não for encontrado e, opcionalmente, fornecendo métodos personalizados para resolver o assembly e o 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)

Obtém o tipo com o nome definido, especificando se uma pesquisa que diferencia maiúsculas de minúsculas deverá ser realizada e se uma exceção deverá ser gerada se o tipo não for encontrado, com a opção de também fornecer métodos personalizados para resolver o assembly e o 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()

Obtém o Type atual.Gets the current Type.

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

Retornos

O Type atual.The current Type.

Implementações

Exceções

Um inicializador de classe é invocado e lança uma exceção.A class initializer is invoked and throws an exception.

Veja também

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

Obtém o Type com o nome especificado, com a execução de uma pesquisa que diferencia maiúsculas de minúsculas.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

Parâmetros

typeName
String String String String

O nome qualificado pelo assembly do tipo a ser obtido.The assembly-qualified name of the type to get. Consulte AssemblyQualifiedName.See AssemblyQualifiedName. Se o tipo estiver no assembly em execução no momento ou em Mscorlib.dll, ele será suficiente para fornecer o nome de tipo qualificado pelo namespace.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.

Retornos

O tipo com o nome especificado, se for encontrado; caso contrário, null.The type with the specified name, if found; otherwise, null.

Exceções

Um inicializador de classe é invocado e lança uma exceção.A class initializer is invoked and throws an exception.

typeName representa um tipo genérico que tem um tipo de ponteiro, um tipo ByRef ou Void como um dos argumentos de tipo.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

- ou --or- typeName representa um tipo genérico que tem um número incorreto de argumentos de tipo.typeName represents a generic type that has an incorrect number of type arguments.

- ou --or- typeName representa um tipo genérico e um dos argumentos de tipo não atende às restrições do parâmetro de tipo correspondente.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

typeName representa uma matriz de TypedReference.typeName represents an array of TypedReference.

Em vez disso, no .NET para aplicativos da Windows Store ou na Biblioteca de Classes Portátil, capture a exceção de classe base, IOException.In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, IOException, instead.

O assembly ou uma de suas dependências foi encontrado, mas não foi possível carregá-lo.The assembly or one of its dependencies was found, but could not be loaded.

O assembly ou uma de suas dependências não é válido.The assembly or one of its dependencies is not valid.

- ou --or-

A versão 2.0 ou posterior do Common Language Runtime está carregada no momento e o assembly foi compilado com uma versão posterior.Version 2.0 or later of the common language runtime is currently loaded, and the assembly was compiled with a later version.

Exemplos

O exemplo a seguir recupera o tipo System.Int32 de e usa esse objeto de tipo para FullName exibir a System.Int32propriedade de.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

Comentários

Você pode usar o GetType método para obter um Type objeto para um tipo em outro assembly se souber seu nome qualificado para assembly, que pode ser obtido do AssemblyQualifiedName.You can use the GetType method to obtain a Type object for a type in another assembly if you know its assembly-qualified name, which can be obtained from AssemblyQualifiedName. GetTypecausa o carregamento do assembly especificado em typeName.GetType causes loading of the assembly specified in typeName. Você também pode carregar um assembly usando o Assembly.Load método e, em seguida, Assembly.GetType usar Assembly.GetTypes o método ou Type para obter objetos.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 um tipo estiver em um assembly conhecido pelo seu programa no momento da compilação, será mais eficiente usar typeof o no C# ou o GetType operador no 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.

Observação

Se typeName não puder ser encontrado, a chamada para GetType(String) o método nullretornará.If typeName cannot be found, the call to the GetType(String) method returns null. Ele não gera uma exceção.It does not throw an exception. Para controlar se uma exceção é gerada, chame uma sobrecarga do GetType método que tem um throwOnError parâmetro.To control whether an exception is thrown, call an overload of the GetType method that has a throwOnError parameter.

GetTypefunciona apenas em assemblies carregados do disco.GetType only works on assemblies loaded from disk. Se você chamar GetType para pesquisar um tipo definido em um assembly dinâmico definido usando os System.Reflection.Emit serviços, você poderá obter um comportamento inconsistente.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. O comportamento depende se o assembly dinâmico é persistente, ou seja, criado usando os RunAndSave modos de acesso ou Save da System.Reflection.Emit.AssemblyBuilderAccess enumeração.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 o assembly dinâmico for persistente e tiver sido gravado no disco antes GetType de ser chamado, o carregador localizará o assembly salvo no disco, carregará esse assembly e recuperará o tipo desse 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 o assembly não tiver sido salvo em disco quando GetType for chamado, o método retornará null.If the assembly has not been saved to disk when GetType is called, the method returns null. GetTypeNão entende assemblies dinâmicos transitórios; Portanto, chamar GetType para recuperar um tipo em um assembly dinâmico transitório retorna null.GetType does not understand transient dynamic assemblies; therefore, calling GetType to retrieve a type in a transient dynamic assembly returns null.

Para usar GetType em um módulo dinâmico, assine o evento AppDomain.AssemblyResolve e chame GetType antes de salvar.To use GetType on a dynamic module, subscribe to the AppDomain.AssemblyResolve event and call GetType before saving. Caso contrário, você receberá duas cópias do assembly na memória.Otherwise, you will get two copies of the assembly in memory.

A tabela a seguir mostra quais membros de uma classe base são retornados pelos métodos Get durante a reflexão em um tipo.The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

Tipo do membroMember Type EstáticoStatic Não estáticoNon-Static
ConstrutorConstructor NãoNo NãoNo
CampoField NãoNo Sim.Yes. Um campo permanece sempre oculto por nome e assinatura.A field is always hide-by-name-and-signature.
eventoEvent Não aplicávelNot applicable A regra de sistema do tipo comum é que a herança é a mesma dos métodos que implementam a propriedade.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Reflexão trata propriedades como ocultas por nome e assinatura.Reflection treats properties as hide-by-name-and-signature. Consulte a observação 2 abaixo.See note 2 below.
MétodoMethod NãoNo Sim.Yes. Um método (virtual e não virtual) pode permanecer oculto por nome ou por nome e assinatura.A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
Tipo aninhadoNested Type NãoNo NãoNo
PropriedadeProperty Não aplicávelNot applicable A regra de sistema do tipo comum é que a herança é a mesma dos métodos que implementam a propriedade.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Reflexão trata propriedades como ocultas por nome e assinatura.Reflection treats properties as hide-by-name-and-signature. Consulte a observação 2 abaixo.See note 2 below.
  1. Oculto por nome e assinatura considera todas as partes da assinatura, inclusive modificadores personalizados, tipos de retorno, tipos de parâmetro, sentinelas e convenções de chamada não gerenciadas.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. Esta é uma comparação binária.This is a binary comparison.

  2. Para reflexão, propriedades e eventos permanecem ocultos por nome e assinatura.For reflection, properties and events are hide-by-name-and-signature. Se você tiver uma propriedade com um acessador get e set na classe base, mas a classe derivada tiver apenas um acessador get, a propriedade de classe derivada ocultará a propriedade da classe base e você não poderá acessar o setter na classe 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. Atributos personalizados não fazem parte do sistema de tipo comum.Custom attributes are not part of the common type system.

Matrizes ou tipos COM não são pesquisados, a menos que eles já tenham sido carregados na tabela de classes disponíveis.Arrays or COM types are not searched for unless they have already been loaded into the table of available classes.

typeNamepode ser o nome de tipo qualificado por seu namespace ou um nome qualificado para assembly que inclui uma especificação de nome de assembly.typeName can be the type name qualified by its namespace or an assembly-qualified name that includes an assembly name specification. Consulte AssemblyQualifiedName.See AssemblyQualifiedName.

Se typeName o incluir o namespace, mas não o nome do assembly, esse método pesquisará apenas o assembly do objeto de chamada e mscorlib. dll, nessa ordem.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 for totalmente qualificado com o nome de assembly parcial ou completo, esse método pesquisará no assembly especificado.If typeName is fully qualified with the partial or complete assembly name, this method searches in the specified assembly. Se o assembly tiver um nome forte, será necessário um nome de assembly completo.If the assembly has a strong name, a complete assembly name is required.

A AssemblyQualifiedName propriedade retorna um nome de tipo totalmente qualificado, incluindo tipos aninhados, o nome do assembly e argumentos de tipo genérico.The AssemblyQualifiedName property returns a fully qualified type name including nested types, the assembly name, and generic type arguments. Todos os compiladores que dão suporte ao Common Language Runtime emitirão o nome simples de uma classe aninhada, e reflexão constrói um nome danificado quando consultado, de acordo com as convenções a seguir.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.

Observação

No .NET Framework versão 2.0, a arquitetura do processador é adicionada à identidade do assembly e pode ser especificada como parte das cadeias de caracteres de nome do 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. Por exemplo, "ProcessorArchitecture=msil".For example, "ProcessorArchitecture=msil". No entanto, ele não está incluído na cadeia de caracteres retornada pela propriedade AssemblyQualifiedName, por motivos de compatibilidade.However, it is not included in the string returned by the AssemblyQualifiedName property, for compatibility reasons. Você também pode carregar tipos criando um objeto AssemblyName e passando-o para uma sobrecarga apropriada Load do método.You can also load types by creating an AssemblyName object and passing it to an appropriate overload of the Load method. Em seguida, você pode Assembly.GetType usar o método para carregar tipos do assembly.You can then use the Assembly.GetType method to load types from the assembly. Consulte também AssemblyName.ProcessorArchitecture.See also AssemblyName.ProcessorArchitecture.

DelimitadorDelimiter SignificadoMeaning
Barra invertida (\)Backslash (\) Caractere de escape.Escape character.
Acento grave (')Backtick (`) Precede um ou mais dígitos que representam o número de parâmetros de tipo, localizados no final do nome de um tipo genérico.Precedes one or more digits representing the number of type parameters, located at the end of the name of a generic type.
Colchetes ([])Brackets ([]) Coloque uma lista de argumentos de tipo genérico para um tipo genérico construído; dentro de uma lista de argumentos de tipo, coloque um tipo qualificado por assembly.Enclose a generic type argument list, for a constructed generic type; within a type argument list, enclose an assembly-qualified type.
Vírgula (,)Comma (,) Precede o nome Assembly.Precedes the Assembly name.
Ponto final (.)Period (.) Denota identificadores de namespace.Denotes namespace identifiers.
Sinal de adição (+)Plus sign (+) Precede uma classe aninhada.Precedes a nested class.

Por exemplo, o nome totalmente qualificado para uma classe pode ser semelhante a:For example, the fully qualified name for a class might look like this:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly  

Se o namespace fosse TopNamespace. sub + namespace, a cadeia de caracteres teria que preceder o sinal de adição (+) com um caractere\de escape () para impedir que ele seja interpretado como um separador de aninhamento.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. A reflexão emite essa cadeia de caracteres da seguinte maneira:Reflection emits this string as follows:

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

Um "+ +" torna-\se "\+\+" e um\"" torna-se "\".A "++" becomes "\+\+", and a "\" becomes "\\".

Este nome qualificado pode ser mantido e posteriormente usado para carregar o Type.This qualified name can be persisted and later used to load the Type. Para procurar e carregar Type, use GetType apenas com o nome do tipo ou com o nome do tipo qualificado do assembly.To search for and load a Type, use GetType either with the type name only or with the assembly qualified type name. GetType com o nome de tipo só irá procurar o Type no assembly do chamador e, em seguida, no assembly System.GetType with the type name only will look for the Type in the caller's assembly and then in the System assembly. GetType com o nome de tipo qualificado de assembly irá procurar o Type em qualquer assembly.GetType with the assembly qualified type name will look for the Type in any assembly.

Nomes de tipo podem incluir caracteres à direita que denotam informações adicionais sobre o tipo, como se o tipo é um tipo de referência, ponteiro ou matriz.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. Para recuperar o nome do tipo sem esses caracteres à direita, use t.GetElementType().ToString(), em que t é o tipo.To retrieve the type name without these trailing characters, use t.GetElementType().ToString(), where t is the type.

Espaços são relevantes em todos os componentes de nome do tipo, exceto o nome do assembly.Spaces are relevant in all type name components except the assembly name. No nome do assembly, espaços antes do separador ',' são relevantes, mas espaços depois do separador ',' são ignorados.In the assembly name, spaces before the ',' separator are relevant, but spaces after the ',' separator are ignored.

O nome de um tipo genérico termina com um acento grave (`) seguido por dígitos que representam o número de argumentos de tipo genérico.The name of a generic type ends with a backtick (`) followed by digits representing the number of generic type arguments. A finalidade dessa destratação de nome é permitir que compiladores ofereçam suporte a tipos genéricos com o mesmo nome, mas com números diferentes de parâmetros de tipo, ocorrendo no mesmo escopo.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. Por Tupleexemplo, reflexão retorna a tupla\<T0, T1> Tuple(Of T) 2 de nomes 1anddesconfigurado dos métodos genéricos e Tuple(Of T0, T1) em Visual Basic, ou Tuple<T> e tupla no Visual C#.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#.

Para tipos genéricos, a lista de argumentos de tipo é colocada entre colchetes e os argumentos de tipo são separados por vírgulas.For generic types, the type argument list is enclosed in brackets, and the type arguments are separated by commas. Por exemplo, um genérico Dictionary<TKey,TValue> tem dois parâmetros de tipo.For example, a generic Dictionary<TKey,TValue> has two type parameters. Uma Dictionary<TKey,TValue> String das MyType chaves with do tipo pode ser representada da seguinte maneira:A Dictionary<TKey,TValue> of MyType with keys of type String might be represented as follows:

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

Para especificar um tipo qualificado por assembly dentro de uma lista de argumentos de tipo, coloque o tipo qualificado por assembly entre colchetes.To specify an assembly-qualified type within a type argument list, enclose the assembly-qualified type within brackets. Caso contrário, as vírgulas que separam as partes do nome qualificado do assembly são interpretadas como delimitar argumentos de tipo adicionais.Otherwise, the commas that separate the parts of the assembly-qualified name are interpreted as delimiting additional type arguments. Por exemplo, um Dictionary<TKey,TValue> de MyType fromMyAssembly. dll, com chaves do tipo String, pode ser especificado da seguinte maneira: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]]")  

Observação

Um tipo qualificado para assembly pode ser colocado entre colchetes somente quando ele aparece dentro de uma lista de parâmetros de tipo.An assembly-qualified type can be enclosed in brackets only when it appears within a type parameter list. As regras para pesquisar assemblies para tipos qualificados e não qualificados em listas de parâmetros de tipo são as mesmas que as regras para tipos não genéricos qualificados e não qualificados.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.

Os tipos anuláveis são um caso especial de tipos genéricos.Nullable types are a special case of generic types. Por exemplo, um valor Int32 nulo é representado pela cadeia de caracteres "System. Nullable ' 1 [System. Int32]".For example, a nullable Int32 is represented by the string "System.Nullable`1[System.Int32]".

Observação

No C#, C++e Visual Basic você também pode obter tipos anuláveis usando operadores de tipo.In C#, C++, and Visual Basic you can also get nullable types using type operators. Por exemplo, o tipo Boolean anulável é retornado por typeof(Nullable<bool>) no C#, por Nullable<Boolean>::typeid no C++, e por GetType(Nullable(Of Boolean)) em 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.

A tabela a seguir mostra a sintaxe que você GetType usa com o para vários tipos.The following table shows the syntax you use with GetType for various types.

Para obterTo Get UseUse
Um valor nuloInt32A nullable Int32 Type.GetType("System.Nullable`1[System.Int32]")
Um ponteiro não gerenciado paraMyTypeAn unmanaged pointer to MyType Type.GetType("MyType*")
Um ponteiro não gerenciado para um ponteiro paraMyTypeAn unmanaged pointer to a pointer to MyType Type.GetType("MyType**")
Um ponteiro ou referência gerenciada paraMyTypeA managed pointer or reference to MyType Type.GetType("MyType&").Type.GetType("MyType&"). Observe que, ao contrário dos ponteiros, as referências são limitadas a um nível.Note that unlike pointers, references are limited to one level.
Uma classe pai e uma classe aninhadaA parent class and a nested class Type.GetType("MyParentClass+MyNestedClass")
Uma matriz unidimensional com um limite inferior de 0A one-dimensional array with a lower bound of 0 Type.GetType("MyType[]")
Uma matriz unidimensional com um limite inferior desconhecidoA one-dimensional array with an unknown lower bound Type.GetType("MyType[*]")
Uma matriz n-dimensionalAn n-dimensional array Uma vírgula (,) dentro dos colchetes com um total de n-1 vezes.A comma (,) inside the brackets a total of n-1 times. Por exemplo, System.Object[,,] representa uma matriz tridimensional. ObjectFor example, System.Object[,,] represents a three-dimensional Object array.
Uma matriz de matrizes unidimensionaisAn array of one-dimensional arrays Type.GetType("MyType[][]")
Uma matriz bidimensional retangular com limites inferiores desconhecidosA rectangular two-dimensional array with unknown lower bounds Type.GetType("MyType[,]")
Um tipo genérico com um argumento de tipoA generic type with one type argument Type.GetType("MyGenericType`1[MyType]")
Um tipo genérico com dois argumentos de tipoA generic type with two type arguments Type.GetType("MyGenericType`2[MyType,AnotherType]")
Um tipo genérico com dois argumentos de tipo qualificado por assemblyA generic type with two assembly-qualified type arguments Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
Um tipo genérico qualificado por assembly com um argumento de tipo qualificado por assemblyAn assembly-qualified generic type with an assembly-qualified type argument Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
Um tipo genérico cujo argumento de tipo é um tipo genérico com dois argumentos de tipoA generic type whose type argument is a generic type with two type arguments Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")
Veja também

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

Obtém o Type com o nome especificado, realizando uma pesquisa que diferencia minúsculas e maiúsculas e especificando se deve ou não lançar uma exceção se o tipo não for encontrado.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

Parâmetros

typeName
String String String String

O nome qualificado pelo assembly do tipo a ser obtido.The assembly-qualified name of the type to get. Consulte AssemblyQualifiedName.See AssemblyQualifiedName. Se o tipo estiver no assembly em execução no momento ou em Mscorlib.dll, ele será suficiente para fornecer o nome de tipo qualificado pelo namespace.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 para gerar uma exceção se não for possível encontrar o tipo; false para retornar null.true to throw an exception if the type cannot be found; false to return null. A especificação de false também suprime algumas condições de exceção, mas não todas.Specifying false also suppresses some other exception conditions, but not all of them. Consulte a seção Exceções.See the Exceptions section.

Retornos

O tipo com o nome especificado.The type with the specified name. Caso o tipo não seja encontrado, o parâmetro throwOnError especifica se null é retornado ou uma exceção é lançada.If the type is not found, the throwOnError parameter specifies whether null is returned or an exception is thrown. Em alguns casos, uma exceção é lançada independentemente do valor de throwOnError.In some cases, an exception is thrown regardless of the value of throwOnError. Consulte a seção Exceções.See the Exceptions section.

Exceções

Um inicializador de classe é invocado e lança uma exceção.A class initializer is invoked and throws an exception.

throwOnError é true e o tipo não foi encontrado.throwOnError is true and the type is not found.

- ou --or- throwOnError é true, e typeName contém caracteres inválidos, como uma guia inserida.throwOnError is true and typeName contains invalid characters, such as an embedded tab. - ou --or- throwOnError é true e typeName é uma cadeia de caracteres vazia.throwOnError is true and typeName is an empty string.

- ou --or- throwOnError é true e typeName representa um tipo de matriz com um tamanho inválido.throwOnError is true and typeName represents an array type with an invalid size.

- ou --or- typeName representa uma matriz de TypedReference.typeName represents an array of TypedReference.

throwOnError é true e typeName contém sintaxe inválida.throwOnError is true and typeName contains invalid syntax. Por exemplo, "MyType[,*,]".For example, "MyType[,*,]".

- ou --or- typeName representa um tipo genérico que tem um tipo de ponteiro, um tipo ByRef ou Void como um dos argumentos de tipo.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

- ou --or- typeName representa um tipo genérico que tem um número incorreto de argumentos de tipo.typeName represents a generic type that has an incorrect number of type arguments.

- ou --or- typeName representa um tipo genérico e um dos argumentos de tipo não atende às restrições do parâmetro de tipo correspondente.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

throwOnError é true e o assembly ou uma de suas dependências não foi encontrado.throwOnError is true and the assembly or one of its dependencies was not found.

Em vez disso, no .NET para aplicativos da Windows Store ou na Biblioteca de Classes Portátil, capture a exceção de classe base, IOException.In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, IOException, instead.

O assembly ou uma de suas dependências foi encontrado, mas não foi possível carregá-lo.The assembly or one of its dependencies was found, but could not be loaded.

O assembly ou uma de suas dependências não é válido.The assembly or one of its dependencies is not valid.

- ou --or-

A versão 2.0 ou posterior do Common Language Runtime está carregada no momento e o assembly foi compilado com uma versão posterior.Version 2.0 or later of the common language runtime is currently loaded, and the assembly was compiled with a later version.

Exemplos

O exemplo a seguir recupera o tipo System.Int32 de e usa esse objeto de tipo para FullName exibir a System.Int32propriedade de.The following example retrieves the type of System.Int32 and uses that type object to display the FullName property of System.Int32. Se um objeto de tipo se referir a um assembly que não existe, este exemplo gera uma exceção.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

Comentários

Você pode usar o GetType método para obter um Type objeto para um tipo em outro assembly se souber seu nome qualificado para assembly, que pode ser obtido do AssemblyQualifiedName.You can use the GetType method to obtain a Type object for a type in another assembly if you know its assembly-qualified name, which can be obtained from AssemblyQualifiedName. GetTypecausa o carregamento do assembly especificado em typeName.GetType causes loading of the assembly specified in typeName. Você também pode carregar um assembly usando o Assembly.Load método e, em seguida, Assembly.GetType usar Assembly.GetTypes o método ou Type para obter objetos.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 um tipo estiver em um assembly conhecido pelo seu programa no momento da compilação, será mais eficiente usar typeof o no C# ou o GetType operador no 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.

GetTypefunciona apenas em assemblies carregados do disco.GetType only works on assemblies loaded from disk. Se você chamar GetType para pesquisar um tipo definido em um assembly dinâmico definido usando os System.Reflection.Emit serviços, você poderá obter um comportamento inconsistente.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. O comportamento depende se o assembly dinâmico é persistente, ou seja, criado usando os RunAndSave modos de acesso ou Save da System.Reflection.Emit.AssemblyBuilderAccess enumeração.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 o assembly dinâmico for persistente e tiver sido gravado no disco antes GetType de ser chamado, o carregador localizará o assembly salvo no disco, carregará esse assembly e recuperará o tipo desse 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 o assembly não tiver sido salvo em disco quando GetType for chamado, o método retornará null.If the assembly has not been saved to disk when GetType is called, the method returns null. GetTypeNão entende assemblies dinâmicos transitórios; Portanto, chamar GetType para recuperar um tipo em um assembly dinâmico transitório retorna null.GetType does not understand transient dynamic assemblies; therefore, calling GetType to retrieve a type in a transient dynamic assembly returns null.

Para usar GetType em um módulo dinâmico, assine o evento AppDomain.AssemblyResolve e chame GetType antes de salvar.To use GetType on a dynamic module, subscribe to the AppDomain.AssemblyResolve event and call GetType before saving. Caso contrário, você receberá duas cópias do assembly na memória.Otherwise, you will get two copies of the assembly in memory.

O throwOnError parâmetro especifica o que acontece quando o tipo não é encontrado e também suprime certas outras condições de exceção, conforme descrito na seção exceções.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. Algumas exceções são lançadas independentemente do valor de throwOnError.Some exceptions are thrown regardless of the value of throwOnError. Por exemplo, se o tipo for encontrado, mas não puder ser carregado TypeLoadException , um será lançado throwOnError mesmo falsese for.For example, if the type is found but cannot be loaded, a TypeLoadException is thrown even if throwOnError is false.

A tabela a seguir mostra quais membros de uma classe base são retornados pelos métodos Get durante a reflexão em um tipo.The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

Tipo do membroMember Type EstáticoStatic Não estáticoNon-Static
ConstrutorConstructor NãoNo NãoNo
CampoField NãoNo Sim.Yes. Um campo permanece sempre oculto por nome e assinatura.A field is always hide-by-name-and-signature.
eventoEvent Não aplicávelNot applicable A regra de sistema do tipo comum é que a herança é a mesma dos métodos que implementam a propriedade.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Reflexão trata propriedades como ocultas por nome e assinatura.Reflection treats properties as hide-by-name-and-signature. Consulte a observação 2 abaixo.See note 2 below.
MétodoMethod NãoNo Sim.Yes. Um método (virtual e não virtual) pode permanecer oculto por nome ou por nome e assinatura.A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
Tipo aninhadoNested Type NãoNo NãoNo
PropriedadeProperty Não aplicávelNot applicable A regra de sistema do tipo comum é que a herança é a mesma dos métodos que implementam a propriedade.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Reflexão trata propriedades como ocultas por nome e assinatura.Reflection treats properties as hide-by-name-and-signature. Consulte a observação 2 abaixo.See note 2 below.
  1. Oculto por nome e assinatura considera todas as partes da assinatura, inclusive modificadores personalizados, tipos de retorno, tipos de parâmetro, sentinelas e convenções de chamada não gerenciadas.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. Esta é uma comparação binária.This is a binary comparison.

  2. Para reflexão, propriedades e eventos permanecem ocultos por nome e assinatura.For reflection, properties and events are hide-by-name-and-signature. Se você tiver uma propriedade com um acessador get e set na classe base, mas a classe derivada tiver apenas um acessador get, a propriedade de classe derivada ocultará a propriedade da classe base e você não poderá acessar o setter na classe 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. Atributos personalizados não fazem parte do sistema de tipo comum.Custom attributes are not part of the common type system.

Matrizes ou tipos COM não são pesquisados, a menos que eles já tenham sido carregados na tabela de classes disponíveis.Arrays or COM types are not searched for unless they have already been loaded into the table of available classes.

typeNamepode ser o nome de tipo qualificado por seu namespace ou um nome qualificado para assembly que inclui uma especificação de nome de assembly.typeName can be the type name qualified by its namespace or an assembly-qualified name that includes an assembly name specification. Consulte AssemblyQualifiedName.See AssemblyQualifiedName.

Se typeName o incluir o namespace, mas não o nome do assembly, esse método pesquisará apenas o assembly do objeto de chamada e mscorlib. dll, nessa ordem.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 for totalmente qualificado com o nome de assembly parcial ou completo, esse método pesquisará no assembly especificado.If typeName is fully qualified with the partial or complete assembly name, this method searches in the specified assembly. Se o assembly tiver um nome forte, será necessário um nome de assembly completo.If the assembly has a strong name, a complete assembly name is required.

A AssemblyQualifiedName propriedade retorna um nome de tipo totalmente qualificado, incluindo tipos aninhados, o nome do assembly e argumentos genéricos.The AssemblyQualifiedName property returns a fully qualified type name including nested types, the assembly name, and generic arguments. Todos os compiladores que dão suporte ao Common Language Runtime emitirão o nome simples de uma classe aninhada, e reflexão constrói um nome danificado quando consultado, de acordo com as convenções a seguir.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.

Observação

No .NET Framework versão 2.0, a arquitetura do processador é adicionada à identidade do assembly e pode ser especificada como parte das cadeias de caracteres de nome do 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. Por exemplo, "ProcessorArchitecture=msil".For example, "ProcessorArchitecture=msil". No entanto, ele não está incluído na cadeia de caracteres retornada pela propriedade AssemblyQualifiedName, por motivos de compatibilidade.However, it is not included in the string returned by the AssemblyQualifiedName property, for compatibility reasons. Você também pode carregar tipos criando um objeto AssemblyName e passando-o para uma sobrecarga apropriada Load do método.You can also load types by creating an AssemblyName object and passing it to an appropriate overload of the Load method. Em seguida, você pode Assembly.GetType usar o método para carregar tipos do assembly.You can then use the Assembly.GetType method to load types from the assembly. Consulte também AssemblyName.ProcessorArchitecture.See also AssemblyName.ProcessorArchitecture.

DelimitadorDelimiter SignificadoMeaning
Barra invertida (\)Backslash (\) Caractere de escape.Escape character.
Acento grave (')Backtick (`) Precede um ou mais dígitos que representam o número de parâmetros de tipo, localizados no final do nome de um tipo genérico.Precedes one or more digits representing the number of type parameters, located at the end of the name of a generic type.
Colchetes ([])Brackets ([]) Coloque uma lista de argumentos de tipo genérico para um tipo genérico construído; dentro de uma lista de argumentos de tipo, coloque um tipo qualificado por assembly.Enclose a generic type argument list, for a constructed generic type; within a type argument list, enclose an assembly-qualified type.
Vírgula (,)Comma (,) Precede o nome Assembly.Precedes the Assembly name.
Ponto final (.)Period (.) Denota identificadores de namespace.Denotes namespace identifiers.
Sinal de adição (+)Plus sign (+) Precede uma classe aninhada.Precedes a nested class.

Por exemplo, o nome totalmente qualificado para uma classe pode ser semelhante a:For example, the fully qualified name for a class might look like this:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly  

Se o namespace fosse TopNamespace. sub + namespace, a cadeia de caracteres teria que preceder o sinal de adição (+) com um caractere\de escape () para impedir que ele seja interpretado como um separador de aninhamento.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. A reflexão emite essa cadeia de caracteres da seguinte maneira:Reflection emits this string as follows:

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

Um "+ +" torna-\se "\+\+" e um\"" torna-se "\".A "++" becomes "\+\+", and a "\" becomes "\\".

Este nome qualificado pode ser mantido e posteriormente usado para carregar o Type.This qualified name can be persisted and later used to load the Type. Para procurar e carregar Type, use GetType apenas com o nome do tipo ou com o nome do tipo qualificado do assembly.To search for and load a Type, use GetType either with the type name only or with the assembly qualified type name. GetType com o nome de tipo só irá procurar o Type no assembly do chamador e, em seguida, no assembly System.GetType with the type name only will look for the Type in the caller's assembly and then in the System assembly. GetType com o nome de tipo qualificado de assembly irá procurar o Type em qualquer assembly.GetType with the assembly qualified type name will look for the Type in any assembly.

Nomes de tipo podem incluir caracteres à direita que denotam informações adicionais sobre o tipo, como se o tipo é um tipo de referência, ponteiro ou matriz.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. Para recuperar o nome do tipo sem esses caracteres à direita, use t.GetElementType().ToString(), em que t é o tipo.To retrieve the type name without these trailing characters, use t.GetElementType().ToString(), where t is the type.

Espaços são relevantes em todos os componentes de nome do tipo, exceto o nome do assembly.Spaces are relevant in all type name components except the assembly name. No nome do assembly, espaços antes do separador ',' são relevantes, mas espaços depois do separador ',' são ignorados.In the assembly name, spaces before the ',' separator are relevant, but spaces after the ',' separator are ignored.

O nome de um tipo genérico termina com um acento grave (`) seguido por dígitos que representam o número de argumentos de tipo genérico.The name of a generic type ends with a backtick (`) followed by digits representing the number of generic type arguments. A finalidade dessa destratação de nome é permitir que compiladores ofereçam suporte a tipos genéricos com o mesmo nome, mas com números diferentes de parâmetros de tipo, ocorrendo no mesmo escopo.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. Por Tupleexemplo, reflexão retorna a tupla\<T0, T1> Tuple(Of T) 2 de nomes 1anddesconfigurado dos métodos genéricos e Tuple(Of T0, T1) em Visual Basic, ou Tuple<T> e tupla no Visual C#.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#.

Para tipos genéricos, a lista de argumentos de tipo é colocada entre colchetes e os argumentos de tipo são separados por vírgulas.For generic types, the type argument list is enclosed in brackets, and the type arguments are separated by commas. Por exemplo, um genérico Dictionary<TKey,TValue> tem dois parâmetros de tipo.For example, a generic Dictionary<TKey,TValue> has two type parameters. Uma Dictionary<TKey,TValue> String das MyType chaves with do tipo pode ser representada da seguinte maneira:A Dictionary<TKey,TValue> of MyType with keys of type String might be represented as follows:

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

Para especificar um tipo qualificado por assembly dentro de uma lista de argumentos de tipo, coloque o tipo qualificado por assembly entre colchetes.To specify an assembly-qualified type within a type argument list, enclose the assembly-qualified type within brackets. Caso contrário, as vírgulas que separam as partes do nome qualificado do assembly são interpretadas como delimitar argumentos de tipo adicionais.Otherwise, the commas that separate the parts of the assembly-qualified name are interpreted as delimiting additional type arguments. Por exemplo, um Dictionary<TKey,TValue> de MyType de myAssembly. dll, com chaves do tipo String, pode ser especificado da seguinte maneira: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]]")  

Observação

Um tipo qualificado para assembly pode ser colocado entre colchetes somente quando ele aparece dentro de uma lista de parâmetros de tipo.An assembly-qualified type can be enclosed in brackets only when it appears within a type parameter list. As regras para pesquisar assemblies para tipos qualificados e não qualificados em listas de parâmetros de tipo são as mesmas que as regras para tipos não genéricos qualificados e não qualificados.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.

Os tipos anuláveis são um caso especial de tipos genéricos.Nullable types are a special case of generic types. Por exemplo, um valor Int32 nulo é representado pela cadeia de caracteres "System. Nullable ' 1 [System. Int32]".For example, a nullable Int32 is represented by the string "System.Nullable`1[System.Int32]".

Observação

No C#, C++e Visual Basic você também pode obter tipos anuláveis usando operadores de tipo.In C#, C++, and Visual Basic you can also get nullable types using type operators. Por exemplo, o tipo Boolean anulável é retornado por typeof(Nullable<bool>) no C#, por Nullable<Boolean>::typeid no C++, e por GetType(Nullable(Of Boolean)) em 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.

A tabela a seguir mostra a sintaxe que você GetType usa com o para vários tipos.The following table shows the syntax you use with GetType for various types.

Para obterTo Get UseUse
Um valor nuloInt32A nullable Int32 Type.GetType("System.Nullable`1[System.Int32]")
Um ponteiro não gerenciado paraMyTypeAn unmanaged pointer to MyType Type.GetType("MyType*")
Um ponteiro não gerenciado para um ponteiro paraMyTypeAn unmanaged pointer to a pointer to MyType Type.GetType("MyType**")
Um ponteiro ou referência gerenciada paraMyTypeA managed pointer or reference to MyType Type.GetType("MyType&").Type.GetType("MyType&"). Observe que, ao contrário dos ponteiros, as referências são limitadas a um nível.Note that unlike pointers, references are limited to one level.
Uma classe pai e uma classe aninhadaA parent class and a nested class Type.GetType("MyParentClass+MyNestedClass")
Uma matriz unidimensional com um limite inferior de 0A one-dimensional array with a lower bound of 0 Type.GetType("MyArray[]")
Uma matriz unidimensional com um limite inferior desconhecidoA one-dimensional array with an unknown lower bound Type.GetType("MyArray[*]")
Uma matriz n-dimensionalAn n-dimensional array Uma vírgula (,) dentro dos colchetes com um total de n-1 vezes.A comma (,) inside the brackets a total of n-1 times. Por exemplo, System.Object[,,] representa uma matriz tridimensional. ObjectFor example, System.Object[,,] represents a three-dimensional Object array.
Uma matriz de matriz bidimensionalA two-dimensional array's array Type.GetType("MyArray[][]")
Uma matriz bidimensional retangular com limites inferiores desconhecidosA rectangular two-dimensional array with unknown lower bounds Type.GetType("MyArray[,]")
Um tipo genérico com um argumento de tipoA generic type with one type argument Type.GetType("MyGenericType`1[MyType]")
Um tipo genérico com dois argumentos de tipoA generic type with two type arguments Type.GetType("MyGenericType`2[MyType,AnotherType]")
Um tipo genérico com dois argumentos de tipo qualificado por assemblyA generic type with two assembly-qualified type arguments Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
Um tipo genérico qualificado por assembly com um argumento de tipo qualificado por assemblyAn assembly-qualified generic type with an assembly-qualified type argument Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
Um tipo genérico cujo argumento de tipo é um tipo genérico com dois argumentos de tipoA generic type whose type argument is a generic type with two type arguments Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")
Veja também

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

Obtém o Type com o nome especificado, especificando se deve ou não lançar uma exceção se o tipo não for encontrado e se deseja executar uma pesquisa diferenciando maiúsculas de minúsculas.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

Parâmetros

typeName
String String String String

O nome qualificado pelo assembly do tipo a ser obtido.The assembly-qualified name of the type to get. Consulte AssemblyQualifiedName.See AssemblyQualifiedName. Se o tipo estiver no assembly em execução no momento ou em Mscorlib.dll, ele será suficiente para fornecer o nome de tipo qualificado pelo namespace.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 para gerar uma exceção se não for possível encontrar o tipo; false para retornar null.true to throw an exception if the type cannot be found; false to return null. A especificação de false também suprime algumas condições de exceção, mas não todas.Specifying false also suppresses some other exception conditions, but not all of them. Consulte a seção Exceções.See the Exceptions section.

ignoreCase
Boolean Boolean Boolean Boolean

true para executar uma pesquisa que diferencia maiúsculas de minúsculas para typeName, false para realizar uma pesquisa que diferencia maiúsculas de minúsculas para typeName.true to perform a case-insensitive search for typeName, false to perform a case-sensitive search for typeName.

Retornos

O tipo com o nome especificado.The type with the specified name. Caso o tipo não seja encontrado, o parâmetro throwOnError especifica se null é retornado ou uma exceção é lançada.If the type is not found, the throwOnError parameter specifies whether null is returned or an exception is thrown. Em alguns casos, uma exceção é lançada independentemente do valor de throwOnError.In some cases, an exception is thrown regardless of the value of throwOnError. Consulte a seção Exceções.See the Exceptions section.

Exceções

Um inicializador de classe é invocado e lança uma exceção.A class initializer is invoked and throws an exception.

throwOnError é true e o tipo não foi encontrado.throwOnError is true and the type is not found.

- ou --or- throwOnError é true, e typeName contém caracteres inválidos, como uma guia inserida.throwOnError is true and typeName contains invalid characters, such as an embedded tab. - ou --or- throwOnError é true e typeName é uma cadeia de caracteres vazia.throwOnError is true and typeName is an empty string.

- ou --or- throwOnError é true e typeName representa um tipo de matriz com um tamanho inválido.throwOnError is true and typeName represents an array type with an invalid size.

- ou --or- typeName representa uma matriz de TypedReference.typeName represents an array of TypedReference.

throwOnError é true e typeName contém sintaxe inválida.throwOnError is true and typeName contains invalid syntax. Por exemplo, "MyType[,*,]".For example, "MyType[,*,]".

- ou --or- typeName representa um tipo genérico que tem um tipo de ponteiro, um tipo ByRef ou Void como um dos argumentos de tipo.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

- ou --or- typeName representa um tipo genérico que tem um número incorreto de argumentos de tipo.typeName represents a generic type that has an incorrect number of type arguments.

- ou --or- typeName representa um tipo genérico e um dos argumentos de tipo não atende às restrições do parâmetro de tipo correspondente.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

throwOnError é true e o assembly ou uma de suas dependências não foi encontrado.throwOnError is true and the assembly or one of its dependencies was not found.

O assembly ou uma de suas dependências foi encontrado, mas não foi possível carregá-lo.The assembly or one of its dependencies was found, but could not be loaded.

O assembly ou uma de suas dependências não é válido.The assembly or one of its dependencies is not valid.

- ou --or-

A versão 2.0 ou posterior do Common Language Runtime está carregada no momento e o assembly foi compilado com uma versão posterior.Version 2.0 or later of the common language runtime is currently loaded, and the assembly was compiled with a later version.

Comentários

Você pode usar o GetType método para obter um Type objeto para um tipo em outro assembly se souber seu nome qualificado para assembly, que pode ser obtido do AssemblyQualifiedName.You can use the GetType method to obtain a Type object for a type in another assembly if you know its assembly-qualified name, which can be obtained from AssemblyQualifiedName. GetTypecausa o carregamento do assembly especificado em typeName.GetType causes loading of the assembly specified in typeName. Você também pode carregar um assembly usando o Assembly.Load método e, em seguida, Assembly.GetType usar Assembly.GetTypes o método ou Type para obter objetos.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 um tipo estiver em um assembly conhecido pelo seu programa no momento da compilação, será mais eficiente usar typeof o no C# ou o GetType operador no 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.

GetTypefunciona apenas em assemblies carregados do disco.GetType only works on assemblies loaded from disk. Se você chamar GetType para pesquisar um tipo definido em um assembly dinâmico definido usando os System.Reflection.Emit serviços, você poderá obter um comportamento inconsistente.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. O comportamento depende se o assembly dinâmico é persistente, ou seja, criado usando os RunAndSave modos de acesso ou Save da System.Reflection.Emit.AssemblyBuilderAccess enumeração.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 o assembly dinâmico for persistente e tiver sido gravado no disco antes GetType de ser chamado, o carregador localizará o assembly salvo no disco, carregará esse assembly e recuperará o tipo desse 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 o assembly não tiver sido salvo em disco quando GetType for chamado, o método retornará null.If the assembly has not been saved to disk when GetType is called, the method returns null. GetTypeNão entende assemblies dinâmicos transitórios; Portanto, chamar GetType para recuperar um tipo em um assembly dinâmico transitório retorna null.GetType does not understand transient dynamic assemblies; therefore, calling GetType to retrieve a type in a transient dynamic assembly returns null.

Para usar GetType em um módulo dinâmico, assine o evento AppDomain.AssemblyResolve e chame GetType antes de salvar.To use GetType on a dynamic module, subscribe to the AppDomain.AssemblyResolve event and call GetType before saving. Caso contrário, você receberá duas cópias do assembly na memória.Otherwise, you will get two copies of the assembly in memory.

O throwOnError parâmetro especifica o que acontece quando o tipo não é encontrado e também suprime certas outras condições de exceção, conforme descrito na seção exceções.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. Algumas exceções são lançadas independentemente do valor de throwOnError.Some exceptions are thrown regardless of the value of throwOnError. Por exemplo, se o tipo for encontrado, mas não puder ser carregado TypeLoadException , um será lançado throwOnError mesmo falsese for.For example, if the type is found but cannot be loaded, a TypeLoadException is thrown even if throwOnError is false.

A tabela a seguir mostra quais membros de uma classe base são retornados pelos métodos Get durante a reflexão em um tipo.The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

Tipo do membroMember Type EstáticoStatic Não estáticoNon-Static
ConstrutorConstructor NãoNo NãoNo
CampoField NãoNo Sim.Yes. Um campo permanece sempre oculto por nome e assinatura.A field is always hide-by-name-and-signature.
eventoEvent Não aplicávelNot applicable A regra de sistema do tipo comum é que a herança é a mesma dos métodos que implementam a propriedade.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Reflexão trata propriedades como ocultas por nome e assinatura.Reflection treats properties as hide-by-name-and-signature. Consulte a observação 2 abaixo.See note 2 below.
MétodoMethod NãoNo Sim.Yes. Um método (virtual e não virtual) pode permanecer oculto por nome ou por nome e assinatura.A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
Tipo aninhadoNested Type NãoNo NãoNo
PropriedadeProperty Não aplicávelNot applicable A regra de sistema do tipo comum é que a herança é a mesma dos métodos que implementam a propriedade.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Reflexão trata propriedades como ocultas por nome e assinatura.Reflection treats properties as hide-by-name-and-signature. Consulte a observação 2 abaixo.See note 2 below.
  1. Oculto por nome e assinatura considera todas as partes da assinatura, inclusive modificadores personalizados, tipos de retorno, tipos de parâmetro, sentinelas e convenções de chamada não gerenciadas.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. Esta é uma comparação binária.This is a binary comparison.

  2. Para reflexão, propriedades e eventos permanecem ocultos por nome e assinatura.For reflection, properties and events are hide-by-name-and-signature. Se você tiver uma propriedade com um acessador get e set na classe base, mas a classe derivada tiver apenas um acessador get, a propriedade de classe derivada ocultará a propriedade da classe base e você não poderá acessar o setter na classe 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. Atributos personalizados não fazem parte do sistema de tipo comum.Custom attributes are not part of the common type system.

Matrizes ou tipos COM não são pesquisados, a menos que eles já tenham sido carregados na tabela de classes disponíveis.Arrays or COM types are not searched for unless they have already been loaded into the table of available classes.

typeNamepode ser o nome de tipo qualificado por seu namespace ou um nome qualificado para assembly que inclui uma especificação de nome de assembly.typeName can be the type name qualified by its namespace or an assembly-qualified name that includes an assembly name specification. Consulte AssemblyQualifiedName.See AssemblyQualifiedName.

Se typeName o incluir o namespace, mas não o nome do assembly, esse método pesquisará apenas o assembly do objeto de chamada e mscorlib. dll, nessa ordem.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 for totalmente qualificado com o nome de assembly parcial ou completo, esse método pesquisará no assembly especificado.If typeName is fully qualified with the partial or complete assembly name, this method searches in the specified assembly. Se o assembly tiver um nome forte, será necessário um nome de assembly completo.If the assembly has a strong name, a complete assembly name is required.

A AssemblyQualifiedName propriedade retorna um nome de tipo totalmente qualificado, incluindo tipos aninhados, o nome do assembly e argumentos de tipo.The AssemblyQualifiedName property returns a fully qualified type name including nested types, the assembly name, and type arguments. Todos os compiladores que dão suporte ao Common Language Runtime emitirão o nome simples de uma classe aninhada, e reflexão constrói um nome danificado quando consultado, de acordo com as convenções a seguir.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.

Observação

No .NET Framework versão 2.0, a arquitetura do processador é adicionada à identidade do assembly e pode ser especificada como parte das cadeias de caracteres de nome do 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. Por exemplo, "ProcessorArchitecture=msil".For example, "ProcessorArchitecture=msil". No entanto, ele não está incluído na cadeia de caracteres retornada pela propriedade AssemblyQualifiedName, por motivos de compatibilidade.However, it is not included in the string returned by the AssemblyQualifiedName property, for compatibility reasons. Você também pode carregar tipos criando um objeto AssemblyName e passando-o para uma sobrecarga apropriada Load do método.You can also load types by creating an AssemblyName object and passing it to an appropriate overload of the Load method. Em seguida, você pode Assembly.GetType usar o método para carregar tipos do assembly.You can then use the Assembly.GetType method to load types from the assembly. Consulte também AssemblyName.ProcessorArchitecture.See also AssemblyName.ProcessorArchitecture.

DelimitadorDelimiter SignificadoMeaning
Barra invertida (\)Backslash (\) Caractere de escape.Escape character.
Acento grave (')Backtick (`) Precede um ou mais dígitos que representam o número de parâmetros de tipo, localizados no final do nome de um tipo genérico.Precedes one or more digits representing the number of type parameters, located at the end of the name of a generic type.
Colchetes ([])Brackets ([]) Coloque uma lista de argumentos de tipo genérico para um tipo genérico construído; dentro de uma lista de argumentos de tipo, coloque um tipo qualificado por assembly.Enclose a generic type argument list, for a constructed generic type; within a type argument list, enclose an assembly-qualified type.
Vírgula (,)Comma (,) Precede o nome Assembly.Precedes the Assembly name.
Ponto final (.)Period (.) Denota identificadores de namespace.Denotes namespace identifiers.
Sinal de adição (+)Plus sign (+) Precede uma classe aninhada.Precedes a nested class.

Por exemplo, o nome totalmente qualificado para uma classe pode ser semelhante a:For example, the fully qualified name for a class might look like this:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly  

Se o namespace fosse TopNamespace. sub + namespace, a cadeia de caracteres teria que preceder o sinal de adição (+) com um caractere\de escape () para impedir que ele seja interpretado como um separador de aninhamento.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. A reflexão emite essa cadeia de caracteres da seguinte maneira:Reflection emits this string as follows:

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

Um "+ +" torna-\se "\+\+" e um\"" torna-se "\".A "++" becomes "\+\+", and a "\" becomes "\\".

Este nome qualificado pode ser mantido e posteriormente usado para carregar o Type.This qualified name can be persisted and later used to load the Type. Para procurar e carregar Type, use GetType apenas com o nome do tipo ou com o nome do tipo qualificado do assembly.To search for and load a Type, use GetType either with the type name only or with the assembly qualified type name. GetType com o nome de tipo só irá procurar o Type no assembly do chamador e, em seguida, no assembly System.GetType with the type name only will look for the Type in the caller's assembly and then in the System assembly. GetType com o nome de tipo qualificado de assembly irá procurar o Type em qualquer assembly.GetType with the assembly qualified type name will look for the Type in any assembly.

Nomes de tipo podem incluir caracteres à direita que denotam informações adicionais sobre o tipo, como se o tipo é um tipo de referência, ponteiro ou matriz.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. Para recuperar o nome do tipo sem esses caracteres à direita, use t.GetElementType().ToString(), em que t é o tipo.To retrieve the type name without these trailing characters, use t.GetElementType().ToString(), where t is the type.

Espaços são relevantes em todos os componentes de nome do tipo, exceto o nome do assembly.Spaces are relevant in all type name components except the assembly name. No nome do assembly, espaços antes do separador ',' são relevantes, mas espaços depois do separador ',' são ignorados.In the assembly name, spaces before the ',' separator are relevant, but spaces after the ',' separator are ignored.

O nome de um tipo genérico termina com um acento grave (`) seguido por dígitos que representam o número de argumentos de tipo genérico.The name of a generic type ends with a backtick (`) followed by digits representing the number of generic type arguments. A finalidade dessa destratação de nome é permitir que compiladores ofereçam suporte a tipos genéricos com o mesmo nome, mas com números diferentes de parâmetros de tipo, ocorrendo no mesmo escopo.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. Por Tupleexemplo, reflexão retorna a tupla\<T0, T1> Tuple(Of T) 2 de nomes 1anddesconfigurado dos métodos genéricos e Tuple(Of T0, T1) em Visual Basic, ou Tuple<T> e tupla no Visual C#.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#.

Para tipos genéricos, a lista de argumentos de tipo é colocada entre colchetes e os argumentos de tipo são separados por vírgulas.For generic types, the type argument list is enclosed in brackets, and the type arguments are separated by commas. Por exemplo, um genérico Dictionary<TKey,TValue> tem dois parâmetros de tipo.For example, a generic Dictionary<TKey,TValue> has two type parameters. Uma Dictionary<TKey,TValue> String das MyType chaves with do tipo pode ser representada da seguinte maneira:A Dictionary<TKey,TValue> of MyType with keys of type String might be represented as follows:

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

Para especificar um tipo qualificado por assembly dentro de uma lista de argumentos de tipo, coloque o tipo qualificado por assembly entre colchetes.To specify an assembly-qualified type within a type argument list, enclose the assembly-qualified type within brackets. Caso contrário, as vírgulas que separam as partes do nome qualificado do assembly são interpretadas como delimitar argumentos de tipo adicionais.Otherwise, the commas that separate the parts of the assembly-qualified name are interpreted as delimiting additional type arguments. Por exemplo, um Dictionary<TKey,TValue> de MyType de myAssembly. dll, com chaves do tipo String, pode ser especificado da seguinte maneira: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]]")  

Observação

Um tipo qualificado para assembly pode ser colocado entre colchetes somente quando ele aparece dentro de uma lista de parâmetros de tipo.An assembly-qualified type can be enclosed in brackets only when it appears within a type parameter list. As regras para pesquisar assemblies para tipos qualificados e não qualificados em listas de parâmetros de tipo são as mesmas que as regras para tipos não genéricos qualificados e não qualificados.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.

Os tipos anuláveis são um caso especial de tipos genéricos.Nullable types are a special case of generic types. Por exemplo, um valor Int32 nulo é representado pela cadeia de caracteres "System. Nullable ' 1 [System. Int32]".For example, a nullable Int32 is represented by the string "System.Nullable`1[System.Int32]".

Observação

No C#, C++e Visual Basic você também pode obter tipos anuláveis usando operadores de tipo.In C#, C++, and Visual Basic you can also get nullable types using type operators. Por exemplo, o tipo Boolean anulável é retornado por typeof(Nullable<bool>) no C#, por Nullable<Boolean>::typeid no C++, e por GetType(Nullable(Of Boolean)) em 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.

A tabela a seguir mostra a sintaxe que você GetType usa com o para vários tipos.The following table shows the syntax you use with GetType for various types.

Para obterTo Get UseUse
Um valor nuloInt32A nullable Int32 Type.GetType("System.Nullable`1[System.Int32]")
Um ponteiro não gerenciado paraMyTypeAn unmanaged pointer to MyType Type.GetType("MyType*")
Um ponteiro não gerenciado para um ponteiro paraMyTypeAn unmanaged pointer to a pointer to MyType Type.GetType("MyType**")
Um ponteiro ou referência gerenciada paraMyTypeA managed pointer or reference to MyType Type.GetType("MyType&").Type.GetType("MyType&"). Observe que, ao contrário dos ponteiros, as referências são limitadas a um nível.Note that unlike pointers, references are limited to one level.
Uma classe pai e uma classe aninhadaA parent class and a nested class Type.GetType("MyParentClass+MyNestedClass")
Uma matriz unidimensional com um limite inferior de 0A one-dimensional array with a lower bound of 0 Type.GetType("MyArray[]")
Uma matriz unidimensional com um limite inferior desconhecidoA one-dimensional array with an unknown lower bound Type.GetType("MyArray[*]")
Uma matriz n-dimensionalAn n-dimensional array Uma vírgula (,) dentro dos colchetes com um total de n-1 vezes.A comma (,) inside the brackets a total of n-1 times. Por exemplo, System.Object[,,] representa uma matriz tridimensional. ObjectFor example, System.Object[,,] represents a three-dimensional Object array.
Uma matriz de matriz bidimensionalA two-dimensional array's array Type.GetType("MyArray[][]")
Uma matriz bidimensional retangular com limites inferiores desconhecidosA rectangular two-dimensional array with unknown lower bounds Type.GetType("MyArray[,]")
Um tipo genérico com um argumento de tipoA generic type with one type argument Type.GetType("MyGenericType`1[MyType]")
Um tipo genérico com dois argumentos de tipoA generic type with two type arguments Type.GetType("MyGenericType`2[MyType,AnotherType]")
Um tipo genérico com dois argumentos de tipo qualificado por assemblyA generic type with two assembly-qualified type arguments Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
Um tipo genérico qualificado por assembly com um argumento de tipo qualificado por assemblyAn assembly-qualified generic type with an assembly-qualified type argument Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
Um tipo genérico cujo argumento de tipo é um tipo genérico com dois argumentos de tipoA generic type whose type argument is a generic type with two type arguments Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")
Veja também

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

Obtém o tipo com o nome especificado, fornecendo opcionalmente métodos personalizados para resolver o assembly e o 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

Parâmetros

typeName
String String String String

O nome do tipo a ser obtido.The name of the type to get. Se o parâmetro typeResolver for fornecido, o nome do tipo poderá ser qualquer cadeia de caracteres que typeResolver possa resolver.If the typeResolver parameter is provided, the type name can be any string that typeResolver is capable of resolving. Se o parâmetro assemblyResolver for fornecido ou se a resolução de tipo padrão for usada, typeName deverá ser um nome qualificado do assembly (consulte AssemblyQualifiedName), a menos que o tipo esteja no assembly em execução no momento ou em Mscorlib.dll, quando então será suficiente fornecer o nome de tipo qualificado por seu namespace.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>

Um método que localiza e retorna o assembly especificado em typeName.A method that locates and returns the assembly that is specified in typeName. O nome do assembly é passado para assemblyResolver como um objeto AssemblyName.The assembly name is passed to assemblyResolver as an AssemblyName object. Se typeName não contiver o nome de um assembly, o assemblyResolver não será chamado.If typeName does not contain the name of an assembly, assemblyResolver is not called. Se o assemblyResolver não for fornecido, será executada a resolução de assembly padrão.If assemblyResolver is not supplied, standard assembly resolution is performed.

Cuidado! Não passe métodos de chamadores desconhecidos ou não confiáveis.Caution Do not pass methods from unknown or untrusted callers. Isso poderá resultar na elevação de privilégio de código mal-intencionado.Doing so could result in elevation of privilege for malicious code. Use apenas métodos fornecidos por você ou com os quais esteja familiarizado.Use only methods that you provide or that you are familiar with.

typeResolver
Func<Assembly,String,Boolean,Type>

Um método que localiza e retorna o tipo especificado pelo typeName do assembly que é retornado pelo assemblyResolver ou pela resolução de assembly padrão.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 nenhum assembly for fornecido, o método typeResolver poderá fornecer um.If no assembly is provided, the typeResolver method can provide one. O método também utiliza um parâmetro que especifica se deve ser executada uma pesquisa que não diferencia maiúsculas de minúsculas. false é passado para esse parâmetro.The method also takes a parameter that specifies whether to perform a case-insensitive search; false is passed to that parameter.

Cuidado! Não passe métodos de chamadores desconhecidos ou não confiáveis.Caution Do not pass methods from unknown or untrusted callers.

Retornos

O tipo com o nome especificado ou null se o tipo não for encontrado.The type with the specified name, or null if the type is not found.

Exceções

Um inicializador de classe é invocado e lança uma exceção.A class initializer is invoked and throws an exception.

Ocorre um erro quando typeName é analisado em um nome de tipo e um nome de assembly (por exemplo, quando o nome do tipo simples inclui um caractere especial sem 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).

- ou --or- typeName representa um tipo genérico que tem um tipo de ponteiro, um tipo ByRef ou Void como um dos argumentos de tipo.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

- ou --or- typeName representa um tipo genérico que tem um número incorreto de argumentos de tipo.typeName represents a generic type that has an incorrect number of type arguments.

- ou --or- typeName representa um tipo genérico e um dos argumentos de tipo não atende às restrições do parâmetro de tipo correspondente.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

typeName representa uma matriz de TypedReference.typeName represents an array of TypedReference.

O assembly ou uma de suas dependências foi encontrado, mas não foi possível carregá-lo.The assembly or one of its dependencies was found, but could not be loaded.

- ou --or- typeName contém um nome de assembly inválido.typeName contains an invalid assembly name.

- ou --or- typeName é um nome de assembly válido sem um nome de tipo.typeName is a valid assembly name without a type name.

O assembly ou uma de suas dependências não é válido.The assembly or one of its dependencies is not valid.

- ou --or-

O assembly foi compilado com uma versão posterior do Common Language Runtime do que a versão carregada atualmente.The assembly was compiled with a later version of the common language runtime than the version that is currently loaded.

Comentários

Os cenários de uso para esse método e detalhes assemblyResolver sobre typeResolver os parâmetros e GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) podem ser encontrados na sobrecarga do método.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.

Observação

Se typeName não puder ser encontrado, a chamada para GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) o método nullretornará.If typeName cannot be found, the call to the GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) method returns null. Ele não gera uma exceção.It does not throw an exception. Para controlar se uma exceção é gerada, chame uma sobrecarga do GetType método que tem um throwOnError parâmetro.To control whether an exception is thrown, call an overload of the GetType method that has a throwOnError parameter.

Chamar essa sobrecarga de método é o mesmo que chamar GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) a sobrecarga do método false e especificar throwOnError para ignoreCase os parâmetros 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)

Obtém o tipo com o nome definido, especificando se deverá ser lançada uma exceção se o tipo não for encontrado e, opcionalmente, fornecendo métodos personalizados para resolver o assembly e o 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

Parâmetros

typeName
String String String String

O nome do tipo a ser obtido.The name of the type to get. Se o parâmetro typeResolver for fornecido, o nome do tipo poderá ser qualquer cadeia de caracteres que typeResolver possa resolver.If the typeResolver parameter is provided, the type name can be any string that typeResolver is capable of resolving. Se o parâmetro assemblyResolver for fornecido ou se a resolução de tipo padrão for usada, typeName deverá ser um nome qualificado do assembly (consulte AssemblyQualifiedName), a menos que o tipo esteja no assembly em execução no momento ou em Mscorlib.dll, quando então será suficiente fornecer o nome de tipo qualificado por seu namespace.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>

Um método que localiza e retorna o assembly especificado em typeName.A method that locates and returns the assembly that is specified in typeName. O nome do assembly é passado para assemblyResolver como um objeto AssemblyName.The assembly name is passed to assemblyResolver as an AssemblyName object. Se typeName não contiver o nome de um assembly, o assemblyResolver não será chamado.If typeName does not contain the name of an assembly, assemblyResolver is not called. Se o assemblyResolver não for fornecido, será executada a resolução de assembly padrão.If assemblyResolver is not supplied, standard assembly resolution is performed.

Cuidado! Não passe métodos de chamadores desconhecidos ou não confiáveis.Caution Do not pass methods from unknown or untrusted callers. Isso poderá resultar na elevação de privilégio de código mal-intencionado.Doing so could result in elevation of privilege for malicious code. Use apenas métodos fornecidos por você ou com os quais esteja familiarizado.Use only methods that you provide or that you are familiar with.

typeResolver
Func<Assembly,String,Boolean,Type>

Um método que localiza e retorna o tipo especificado por typeName do assembly que é retornado pelo assemblyResolver ou pela resolução de assembly padrão.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 nenhum assembly for indicado, o método poderá fornecer um.If no assembly is provided, the method can provide one. O método também utiliza um parâmetro que especifica se deve ser executada uma pesquisa que não diferencia maiúsculas de minúsculas. false é passado para esse parâmetro.The method also takes a parameter that specifies whether to perform a case-insensitive search; false is passed to that parameter.

Cuidado! Não passe métodos de chamadores desconhecidos ou não confiáveis.Caution Do not pass methods from unknown or untrusted callers.

throwOnError
Boolean Boolean Boolean Boolean

true para gerar uma exceção se não for possível encontrar o tipo; false para retornar null.true to throw an exception if the type cannot be found; false to return null. A especificação de false também suprime algumas condições de exceção, mas não todas.Specifying false also suppresses some other exception conditions, but not all of them. Consulte a seção Exceções.See the Exceptions section.

Retornos

O tipo com o nome especificado.The type with the specified name. Caso o tipo não seja encontrado, o parâmetro throwOnError especifica se null é retornado ou uma exceção é lançada.If the type is not found, the throwOnError parameter specifies whether null is returned or an exception is thrown. Em alguns casos, uma exceção é lançada independentemente do valor de throwOnError.In some cases, an exception is thrown regardless of the value of throwOnError. Consulte a seção Exceções.See the Exceptions section.

Exceções

Um inicializador de classe é invocado e lança uma exceção.A class initializer is invoked and throws an exception.

throwOnError é true e o tipo não foi encontrado.throwOnError is true and the type is not found.

- ou --or- throwOnError é true, e typeName contém caracteres inválidos, como uma guia inserida.throwOnError is true and typeName contains invalid characters, such as an embedded tab. - ou --or- throwOnError é true e typeName é uma cadeia de caracteres vazia.throwOnError is true and typeName is an empty string.

- ou --or- throwOnError é true e typeName representa um tipo de matriz com um tamanho inválido.throwOnError is true and typeName represents an array type with an invalid size.

- ou --or- typeName representa uma matriz de TypedReference.typeName represents an array of TypedReference.

Ocorre um erro quando typeName é analisado em um nome de tipo e um nome de assembly (por exemplo, quando o nome do tipo simples inclui um caractere especial sem 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).

- ou --or- throwOnError é true e typeName contém sintaxe inválida (por exemplo, "MyType[,*,]").throwOnError is true and typeName contains invalid syntax (for example, "MyType[,*,]").

- ou --or- typeName representa um tipo genérico que tem um tipo de ponteiro, um tipo ByRef ou Void como um dos argumentos de tipo.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

- ou --or- typeName representa um tipo genérico que tem um número incorreto de argumentos de tipo.typeName represents a generic type that has an incorrect number of type arguments.

- ou --or- typeName representa um tipo genérico e um dos argumentos de tipo não atende às restrições do parâmetro de tipo correspondente.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

throwOnError é true e o assembly ou uma de suas dependências não foi encontrado.throwOnError is true and the assembly or one of its dependencies was not found.

- ou --or- typeName contém um nome de assembly inválido.typeName contains an invalid assembly name.

- ou --or- typeName é um nome de assembly válido sem um nome de tipo.typeName is a valid assembly name without a type name.

O assembly ou uma de suas dependências foi encontrado, mas não foi possível carregá-lo.The assembly or one of its dependencies was found, but could not be loaded.

O assembly ou uma de suas dependências não é válido.The assembly or one of its dependencies is not valid.

- ou --or-

O assembly foi compilado com uma versão posterior do Common Language Runtime do que a versão carregada atualmente.The assembly was compiled with a later version of the common language runtime than the version that is currently loaded.

Comentários

Os cenários de uso para esse método e detalhes assemblyResolver sobre typeResolver os parâmetros e GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) podem ser encontrados na sobrecarga do método.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.

Chamar essa sobrecarga de método é o mesmo que chamar GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) a sobrecarga do método false e especificar ignoreCase para o parâmetro.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)

Obtém o tipo com o nome definido, especificando se uma pesquisa que diferencia maiúsculas de minúsculas deverá ser realizada e se uma exceção deverá ser gerada se o tipo não for encontrado, com a opção de também fornecer métodos personalizados para resolver o assembly e o 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

Parâmetros

typeName
String String String String

O nome do tipo a ser obtido.The name of the type to get. Se o parâmetro typeResolver for fornecido, o nome do tipo poderá ser qualquer cadeia de caracteres que typeResolver possa resolver.If the typeResolver parameter is provided, the type name can be any string that typeResolver is capable of resolving. Se o parâmetro assemblyResolver for fornecido ou se a resolução de tipo padrão for usada, typeName deverá ser um nome qualificado do assembly (consulte AssemblyQualifiedName), a menos que o tipo esteja no assembly em execução no momento ou em Mscorlib.dll, quando então será suficiente fornecer o nome de tipo qualificado por seu namespace.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>

Um método que localiza e retorna o assembly especificado em typeName.A method that locates and returns the assembly that is specified in typeName. O nome do assembly é passado para assemblyResolver como um objeto AssemblyName.The assembly name is passed to assemblyResolver as an AssemblyName object. Se typeName não contiver o nome de um assembly, o assemblyResolver não será chamado.If typeName does not contain the name of an assembly, assemblyResolver is not called. Se o assemblyResolver não for fornecido, será executada a resolução de assembly padrão.If assemblyResolver is not supplied, standard assembly resolution is performed.

Cuidado! Não passe métodos de chamadores desconhecidos ou não confiáveis.Caution Do not pass methods from unknown or untrusted callers. Isso poderá resultar na elevação de privilégio de código mal-intencionado.Doing so could result in elevation of privilege for malicious code. Use apenas métodos fornecidos por você ou com os quais esteja familiarizado.Use only methods that you provide or that you are familiar with.

typeResolver
Func<Assembly,String,Boolean,Type>

Um método que localiza e retorna o tipo especificado por typeName do assembly que é retornado pelo assemblyResolver ou pela resolução de assembly padrão.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 nenhum assembly for indicado, o método poderá fornecer um.If no assembly is provided, the method can provide one. O método também utiliza um parâmetro que especifica se deve executar uma pesquisa que diferencia maiúsculas de minúsculas. O valor de ignoreCase é passado para esse parâmetro.The method also takes a parameter that specifies whether to perform a case-insensitive search; the value of ignoreCase is passed to that parameter.

Cuidado! Não passe métodos de chamadores desconhecidos ou não confiáveis.Caution Do not pass methods from unknown or untrusted callers.

throwOnError
Boolean Boolean Boolean Boolean

true para gerar uma exceção se não for possível encontrar o tipo; false para retornar null.true to throw an exception if the type cannot be found; false to return null. A especificação de false também suprime algumas condições de exceção, mas não todas.Specifying false also suppresses some other exception conditions, but not all of them. Consulte a seção Exceções.See the Exceptions section.

ignoreCase
Boolean Boolean Boolean Boolean

true para executar uma pesquisa que diferencia maiúsculas de minúsculas para typeName, false para realizar uma pesquisa que diferencia maiúsculas de minúsculas para typeName.true to perform a case-insensitive search for typeName, false to perform a case-sensitive search for typeName.

Retornos

O tipo com o nome especificado.The type with the specified name. Caso o tipo não seja encontrado, o parâmetro throwOnError especifica se null é retornado ou uma exceção é lançada.If the type is not found, the throwOnError parameter specifies whether null is returned or an exception is thrown. Em alguns casos, uma exceção é lançada independentemente do valor de throwOnError.In some cases, an exception is thrown regardless of the value of throwOnError. Consulte a seção Exceções.See the Exceptions section.

Exceções

Um inicializador de classe é invocado e lança uma exceção.A class initializer is invoked and throws an exception.

throwOnError é true e o tipo não foi encontrado.throwOnError is true and the type is not found.

- ou --or- throwOnError é true, e typeName contém caracteres inválidos, como uma guia inserida.throwOnError is true and typeName contains invalid characters, such as an embedded tab. - ou --or- throwOnError é true e typeName é uma cadeia de caracteres vazia.throwOnError is true and typeName is an empty string.

- ou --or- throwOnError é true e typeName representa um tipo de matriz com um tamanho inválido.throwOnError is true and typeName represents an array type with an invalid size.

- ou --or- typeName representa uma matriz de TypedReference.typeName represents an array of TypedReference.

Ocorre um erro quando typeName é analisado em um nome de tipo e um nome de assembly (por exemplo, quando o nome do tipo simples inclui um caractere especial sem 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).

- ou --or- throwOnError é true e typeName contém sintaxe inválida (por exemplo, "MyType[,*,]").throwOnError is true and typeName contains invalid syntax (for example, "MyType[,*,]").

- ou --or- typeName representa um tipo genérico que tem um tipo de ponteiro, um tipo ByRef ou Void como um dos argumentos de tipo.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

- ou --or- typeName representa um tipo genérico que tem um número incorreto de argumentos de tipo.typeName represents a generic type that has an incorrect number of type arguments.

- ou --or- typeName representa um tipo genérico e um dos argumentos de tipo não atende às restrições do parâmetro de tipo correspondente.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

throwOnError é true e o assembly ou uma de suas dependências não foi encontrado.throwOnError is true and the assembly or one of its dependencies was not found.

O assembly ou uma de suas dependências foi encontrado, mas não foi possível carregá-lo.The assembly or one of its dependencies was found, but could not be loaded.

- ou --or- typeName contém um nome de assembly inválido.typeName contains an invalid assembly name.

- ou --or- typeName é um nome de assembly válido sem um nome de tipo.typeName is a valid assembly name without a type name.

O assembly ou uma de suas dependências não é válido.The assembly or one of its dependencies is not valid.

- ou --or-

O assembly foi compilado com uma versão posterior do Common Language Runtime do que a versão carregada atualmente.The assembly was compiled with a later version of the common language runtime than the version that is currently loaded.

Comentários

Use essa sobrecarga de método e suas sobrecargas associadasGetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) ( GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean)e) para substituir GetType a implementação padrão do método por implementações mais flexíveis.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. Ao fornecer seus próprios métodos que resolvem nomes de tipo e os nomes dos assemblies que os contêm, você pode fazer o seguinte:By providing your own methods that resolve type names and the names of the assemblies that contain them, you can do the following:

  • Controle de qual versão de um assembly um tipo é carregado.Control which version of an assembly a type is loaded from.

  • Forneça outro local para procurar um nome de tipo que não inclua um nome de assembly.Provide another place to look for a type name that does not include an assembly name.

  • Carregar assemblies usando nomes de assembly parciais.Load assemblies using partial assembly names.

  • As subclasses de System.Type retorno não são criadas pelo Common Language Runtime (CLR).Return subclasses of System.Type that are not created by the common language runtime (CLR).

Por exemplo, em serialização tolerante a versão, esse método permite que você pesquise um assembly "melhor ajuste" usando um nome parcial.For example, in version-tolerant serialization this method enables you to search for a "best fit" assembly by using a partial name. Outras sobrecargas do GetType método exigem um nome de tipo qualificado por assembly, que inclui o número de versão.Other overloads of the GetType method require an assembly-qualified type name, which includes the version number.

Implementações alternativas do sistema de tipos podem precisar retornar subclasses de System.Type que não são criadas pelo CLR; todos os tipos retornados por outras sobrecargas GetType do método são tipos de tempo de execução.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.

Notas de usoUsage Notes

Essa sobrecarga de método e suas sobrecargas associadas typeName analisam o nome de um tipo e o nome de um assembly e, em seguida, resolvem os nomes.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. A resolução do nome do assembly ocorre antes da resolução do nome do tipo, pois um nome de tipo deve ser resolvido no contexto de um 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.

Observação

Se você não estiver familiarizado com o conceito de nomes de tipos qualificados por assembly, consulte AssemblyQualifiedName a propriedade.If you are unfamiliar with the concept of assembly-qualified type names, see the AssemblyQualifiedName property.

Se typeName não for um nome qualificado para assembly, a resolução do assembly será ignorada.If typeName is not an assembly-qualified name, assembly resolution is skipped. Nomes de tipos não qualificados podem ser resolvidos no contexto de mscorlib. dll ou do assembly em execução no momento, ou você pode, opcionalmente, typeResolver fornecer um assembly no parâmetro.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. Os efeitos de incluir ou omitir o nome do assembly para diferentes tipos de resolução de nomes são exibidos como uma tabela na seção resolução de nomes mistos .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.

Notas de uso gerais:General usage notes:

  • Não transmita métodos para assemblyResolver ou typeResolver se eles vierem de chamadores desconhecidos ou não confiáveis.Do not pass methods to assemblyResolver or typeResolver if they come from unknown or untrusted callers. Use apenas métodos fornecidos por você ou com os quais esteja familiarizado.Use only methods that you provide or that you are familiar with.

    Cuidado

    O uso de métodos de chamadores desconhecidos ou não confiáveis pode resultar na elevação de privilégio para código mal-intencionado.Using methods from unknown or untrusted callers could result in elevation of privilege for malicious code.

  • Se você omitir assemblyResolver os parâmetros e typeResolver /ou throwOnError , o valor do parâmetro será passado para os métodos que executam a resolução padrão.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 for typeResolver null FileNotFoundException , esse método lançará TypeLoadException um When retorna e um quando assemblyResolver retornará null. trueIf throwOnError is true, this method throws a TypeLoadException when typeResolver returns null, and a FileNotFoundException when assemblyResolver returns null.

  • Esse método não captura exceções lançadas pelo assemblyResolver e typeResolverpelo.This method does not catch exceptions thrown by assemblyResolver and typeResolver. Você é responsável por quaisquer exceções geradas pelos métodos do resolvedor.You are responsible for any exceptions that are thrown by the resolver methods.

Resolvendo assembliesResolving Assemblies

O assemblyResolver método recebe um AssemblyName objeto, que é produzido analisando o nome do assembly da cadeia de caracteres que typeNameestá incluído no.The assemblyResolver method receives an AssemblyName object, which is produced by parsing the string assembly name that is included in typeName. Se typeName não contiver um nome de assembly assemblyResolver , não será chamado null e será passado typeResolverpara.If typeName does not contain an assembly name, assemblyResolver is not called and null is passed to typeResolver.

Se assemblyResolver não for fornecido, a investigação de assembly padrão será usada para localizar o assembly.If assemblyResolver is not supplied, standard assembly probing is used to locate the assembly. Se assemblyResolver for fornecido, o GetType método não fará investigação padrão; nesse caso, você deve garantir que o assemblyResolver possa lidar com todos os assemblies que você passa para ele.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.

O assemblyResolver método deve retornar null se o assembly não puder ser resolvido.The assemblyResolver method should return null if the assembly cannot be resolved. Se assemblyResolver retorna FileNotFoundException true throwOnError , não é chamado e nenhum processamento adicional ocorre; além disso, se for, um será gerado. typeResolver nullIf assemblyResolver returns null, typeResolver is not called and no further processing occurs; additionally, if throwOnError is true, a FileNotFoundException is thrown.

Se o AssemblyName que for passado para assemblyResolver for um nome parcial, uma ou mais de suas partes serão null.If the AssemblyName that is passed to assemblyResolver is a partial name, one or more of its parts are null. Por exemplo, se não tiver nenhuma versão, a Version propriedade será null.For example, if it has no version, the Version property is null. Se a Version Propriedade, a CultureInfo Propriedade e o GetPublicKeyToken método retornarem null, somente o nome simples do assembly foi fornecido.If the Version property, the CultureInfo property, and the GetPublicKeyToken method all return null, then only the simple name of the assembly was supplied. O assemblyResolver método pode usar ou ignorar todas as partes do nome do assembly.The assemblyResolver method can use or ignore all parts of the assembly name.

Os efeitos de diferentes opções de resolução de assembly são exibidos como uma tabela na seção resolução de nomes mistos para nomes de tipos simples e qualificados por 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.

Resolvendo tiposResolving Types

Se typeName não especificar um nome de assembly, typeResolver será sempre chamado.If typeName does not specify an assembly name, typeResolver is always called. Se typeName o especificar um nome de typeResolver assembly, será chamado somente quando o nome do assembly for resolvido com êxito.If typeName specifies an assembly name, typeResolver is called only when the assembly name is successfully resolved. Se assemblyResolver ou o investigador de assembly nullpadrão typeResolver retorna, não é chamado.If assemblyResolver or standard assembly probing returns null, typeResolver is not called.

O typeResolver método recebe três argumentos:The typeResolver method receives three arguments:

  • O assembly a ser pesquisado typeName ou null se não contiver um nome de assembly.The assembly to search or null if typeName does not contain an assembly name.

  • O nome simples do tipo.The simple name of the type. No caso de um tipo aninhado, esse é o tipo de conteúdo mais externo.In the case of a nested type, this is the outermost containing type. No caso de um tipo genérico, esse é o nome simples do tipo genérico.In the case of a generic type, this is the simple name of the generic type.

  • Um valor booleano que é true se o caso de nomes de tipo for ignorado.A Boolean value that is true if the case of type names is to be ignored.

A implementação determina a maneira como esses argumentos são usados.The implementation determines the way these arguments are used. O typeResolver método deve retornar null se ele não puder resolver o tipo.The typeResolver method should return null if it cannot resolve the type. Se typeResolver retorna null e éthrowOnError GetType , essa sobrecarga de gera umTypeLoadException. trueIf typeResolver returns null and throwOnError is true, this overload of GetType throws a TypeLoadException.

Os efeitos das diferentes opções de resolução de tipo são exibidos como uma tabela na seção resolução de nomes mistos para nomes de tipos simples e qualificados por 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.

Resolvendo tipos aninhadosResolving Nested Types

Se typeName for um tipo aninhado, somente o nome do tipo que contém o mais externo typeResolverserá passado para.If typeName is a nested type, only the name of the outermost containing type is passed to typeResolver. Quando typeResolver retorna esse tipo, o GetNestedType método é chamado recursivamente até que o tipo aninhado mais interno tenha sido resolvido.When typeResolver returns this type, the GetNestedType method is called recursively until the innermost nested type has been resolved.

Resolvendo tipos genéricosResolving Generic Types

O GetType é chamado recursivamente para resolver tipos genéricos: Primeiro, para resolver o tipo genérico e, em seguida, para resolver seus argumentos de 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 um argumento de tipo é genérico GetType , é chamado recursivamente para resolver seus argumentos de tipo e assim por diante.If a type argument is generic, GetType is called recursively to resolve its type arguments, and so on.

A combinação de assemblyResolver e typeResolver que você fornece deve ser capaz de resolver todos os níveis dessa recursão.The combination of assemblyResolver and typeResolver that you provide must be capable of resolving all levels of this recursion. Por exemplo, suponha que você forneça assemblyResolver um que controla o carregamento MyAssemblyde.For example, suppose you supply an assemblyResolver that controls the loading of MyAssembly. Suponha que você queira resolver o tipo Dictionary<string, MyType> genérico (Dictionary(Of String, MyType) em Visual Basic).Suppose you want to resolve the generic type Dictionary<string, MyType> (Dictionary(Of String, MyType) in Visual Basic). Você pode passar o seguinte nome de tipo genérico:You might pass the following generic type name:

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

Observe que MyType é o único argumento de tipo qualificado por assembly.Notice that MyType is the only assembly-qualified type argument. Os nomes das Dictionary<TKey,TValue> classes e String não são qualificados por assembly.The names of the Dictionary<TKey,TValue> and String classes are not assembly-qualified. Seu typeResolver deve ser capaz de lidar com um assembly nullou, porque ele receberá Dictionary<TKey,TValue> null para Stringe.Your typeResolver must be able handle either an assembly or null, because it will receive null for Dictionary<TKey,TValue> and String. Ele pode lidar com esse caso chamando uma sobrecarga do GetType método que usa uma cadeia de caracteres, porque ambos os nomes de tipo não qualificados estão em 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)
                     ); 

O assemblyResolver método não é chamado para o tipo de dicionário e o tipo de cadeia de caracteres, porque esses nomes de tipo não são qualificados para assembly.The assemblyResolver method is not called for the dictionary type and the string type, because those type names are not assembly-qualified.

Agora suponha que, em System.Stringvez de, o primeiro tipo de YourTypeargumento genérico YourAssemblyseja, de: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]]"  

Como esse assembly não é mscorlib. dll nem o assembly atualmente em execução, você não YourType pode resolver sem um nome qualificado para assembly.Because this assembly is neither Mscorlib.dll nor the currently executing assembly, you cannot resolve YourType without an assembly-qualified name. Como seu assemblyResolve será chamado recursivamente, ele deve ser capaz de lidar com esse caso.Because your assemblyResolve will be called recursively, it must be able to handle this case. Em vez de null retornar para assemblies diferentes MyAssemblyde, agora ele executa uma carga de assembly usando AssemblyName o objeto fornecido.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
                      ); 

Voltar para as observações de uso.Back to Usage Notes.

Resolvendo nomes de tipo com caracteres especiaisResolving Type Names with Special Characters

Determinados caracteres têm significados especiais em nomes qualificados por assembly.Certain characters have special meanings in assembly-qualified names. Se um nome de tipo simples contiver esses caracteres, os caracteres causarão erros de análise quando o nome simples fizer parte de um nome qualificado por 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. Para evitar os erros de análise, você deve escapar dos caracteres especiais com uma barra invertida antes de poder passar o nome qualificado do assembly para GetType o método.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. Por exemplo, se um tipo for nomeado Strange]Type, o caractere de escape deverá ser adicionado à frente do colchete da seguinte maneira 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.

Observação

Nomes com esses caracteres especiais não podem ser criados em Visual Basic C#ou, mas podem ser criados usando a MSIL (Microsoft Intermediate Language) ou emitindo assemblies dinâmicos.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.

A tabela a seguir mostra os caracteres especiais para nomes de tipo.The following table shows the special characters for type names.

CaractereCharacter SignificadoMeaning
,pontos, (comma) Delimitador para nomes qualificados por assembly.Delimiter for assembly-qualified names.
[](colchetes)[] (square brackets) Como um par de sufixo, indica um tipo de matriz; como um par delimitador, o inclui listas de argumentos genéricos e nomes qualificados por assembly.As a suffix pair, indicates an array type; as a delimiter pair, encloses generic argument lists and assembly-qualified names.
&'& (ampersand) Como sufixo, indica que um tipo é um tipo de referência.As a suffix, indicates that a type is a reference type.
*asterisco* (asterisk) Como sufixo, indica que um tipo é um tipo de ponteiro.As a suffix, indicates that a type is a pointer type.
+acrescido+ (plus) Delimitador para tipos aninhados.Delimiter for nested types.
\barra invertida\ (backslash) Caractere de escape.Escape character.

Propriedades como retornar AssemblyQualifiedName cadeias de caracteres de escape corretamente.Properties such as AssemblyQualifiedName return correctly escaped strings. Você deve passar as cadeias de caracteres GetType com escape corretas para o método.You must pass correctly escaped strings to the GetType method. Por sua vez, GetType o método passa corretamente nomes com typeResolver escape para e para os métodos de resolução de tipo padrão.In turn, the GetType method passes correctly escaped names to typeResolver and to the default type resolution methods. Se você precisar comparar um nome com um nome sem escape no typeResolver, deverá remover os caracteres de escape.If you need to compare a name to an unescaped name in typeResolver, you must remove the escape characters.

Voltar para as observações de uso.Back to Usage Notes.

Resolução de nome mistoMixed Name Resolution

A tabela a seguir resume as interações assemblyResolverentre typeResolver, e resolução de nome padrão, para todas as combinações de nome de tipo e typeNamenome de assembly em:The following table summarizes the interactions between assemblyResolver, typeResolver, and default name resolution, for all combinations of type name and assembly name in typeName:

Conteúdo do tipo nomeContents of type name Método de resolvedor de assemblyAssembly resolver method Método resolvedor de tipoType resolver method ResultadoResult
tipo, assemblytype, assembly nulonull nulonull Equivalente a chamar a Type.GetType(String, Boolean, Boolean) sobrecarga do método.Equivalent to calling the Type.GetType(String, Boolean, Boolean) method overload.
tipo, assemblytype, assembly fornecidoprovided nulonull assemblyResolverRetorna o assembly ou retorna null se ele não puder resolver o assembly.assemblyResolver returns the assembly or returns null if it cannot resolve the assembly. Se o assembly for resolvido, a Assembly.GetType(String, Boolean, Boolean) sobrecarga do método será usada para carregar o tipo do assembly; caso contrário, não haverá nenhuma tentativa de resolver o 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 nulonull fornecidoprovided Equivalente a converter o nome do assembly em AssemblyName um objeto e chamar Assembly.Load(AssemblyName) a sobrecarga do método para obter o assembly.Equivalent to converting the assembly name to an AssemblyName object and calling the Assembly.Load(AssemblyName) method overload to get the assembly. Se o assembly for resolvido, ele será passado para typeResolver; caso contrário typeResolver , não será chamado e não haverá nenhuma tentativa adicional de resolver o 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 fornecidoprovided fornecidoprovided assemblyResolverRetorna o assembly ou retorna null se ele não puder resolver o assembly.assemblyResolver returns the assembly or returns null if it cannot resolve the assembly. Se o assembly for resolvido, ele será passado para typeResolver; caso contrário typeResolver , não será chamado e não haverá nenhuma tentativa adicional de resolver o 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 nulo, fornecidonull, provided nulonull Equivalente a chamar a Type.GetType(String, Boolean, Boolean) sobrecarga do método.Equivalent to calling the Type.GetType(String, Boolean, Boolean) method overload. Como o nome do assembly não é fornecido, somente mscorlib. dll e o assembly em execução no momento são pesquisados.Because the assembly name is not provided, only Mscorlib.dll and the currently executing assembly are searched. Se assemblyResolver for fornecido, ele será ignorado.If assemblyResolver is provided, it is ignored.
tipotype nulo, fornecidonull, provided fornecidoprovided typeResolveré chamado e null é passado para o assembly.typeResolver is called, and null is passed for the assembly. typeResolverpode fornecer um tipo de qualquer assembly, incluindo assemblies que ele carrega para fins de finalidade.typeResolver can provide a type from any assembly, including assemblies it loads for the purpose. Se assemblyResolver for fornecido, ele será ignorado.If assemblyResolver is provided, it is ignored.
assemblyassembly nulo, fornecidonull, provided nulo, fornecidonull, provided Um FileLoadException é gerado, porque o nome do assembly é analisado como se fosse um nome de tipo qualificado por assembly.A FileLoadException is thrown, because the assembly name is parsed as if it were an assembly-qualified type name. Isso resulta em um nome de assembly inválido.This results in an invalid assembly name.

Voltar para: Observações de uso, resolução de assemblies, resolução de tipos.Back to: Usage Notes, Resolving Assemblies, Resolving Types.

Aplica-se a