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

Definición

Obtiene un objeto Type que representa el tipo especificado.Gets a Type object that represents the specified type.

Sobrecargas

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)

Obtiene el tipo con el nombre indicado, que especifica si se va a realizar una búsqueda sin distinguir mayúsculas de minúsculas y si se va a iniciar una excepción en caso de que el tipo no se encuentre y que, de manera opcional, puede proporcionar métodos personalizados para resolver el ensamblado y el 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(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)

Obtiene el tipo con el nombre indicado, que especifica si se va a iniciar una excepción en caso de que el tipo no se encuentre y que, de manera opcional, puede proporcionar métodos personalizados para resolver el ensamblado y el 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>) 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>)

Obtiene el tipo con el nombre especificado, que, de manera opcional, puede proporcionar métodos personalizados para resolver el ensamblado y el tipo.Gets the type with the specified name, optionally providing custom methods to resolve the assembly and the type.

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

Obtiene la estructura Type actual.Gets the current Type.

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

Obtiene el objeto Type con el nombre especificado, que realiza una búsqueda donde se distingue entre mayúsculas y minúsculas y especifica si se va a producir o no una excepción si no se encuentra el tipo.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) GetType(String) GetType(String) GetType(String)

Obtiene el objeto Type con el nombre especificado, mediante una búsqueda en la que se distingue entre mayúsculas y minúsculas.Gets the Type with the specified name, performing a case-sensitive search.

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

Obtiene el Type con el nombre indicado, que especifica si se genera una excepción en caso de que no se encuentre el tipo y si se va a realizar una búsqueda donde se distingue entre mayúsculas y 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>, 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)

Obtiene el tipo con el nombre indicado, que especifica si se va a realizar una búsqueda sin distinguir mayúsculas de minúsculas y si se va a iniciar una excepción en caso de que el tipo no se encuentre y que, de manera opcional, puede proporcionar métodos personalizados para resolver el ensamblado y el 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

Nombre del tipo que se va a obtener.The name of the type to get. Si se proporciona el parámetro typeResolver, el nombre del tipo puede ser cualquier cadena que typeResolver pueda resolver.If the typeResolver parameter is provided, the type name can be any string that typeResolver is capable of resolving. Si se proporciona el parámetro assemblyResolver o se usa la resolución de tipos estándar, typeName debe ser un nombre calificado con el ensamblado (vea AssemblyQualifiedName), a menos que el tipo esté en el ensamblado que se ejecuta actualmente o en Mscorlib.dll, en cuyo caso basta con aplicar el nombre de tipo calificado con su espacio de nombres.If the assemblyResolver parameter is provided or if standard type resolution is used, typeName must be an assembly-qualified name (see AssemblyQualifiedName), unless the type is in the currently executing assembly or in Mscorlib.dll, in which case it is sufficient to supply the type name qualified by its namespace.

assemblyResolver
Func<AssemblyName,Assembly>

Método que busca y devuelve el ensamblado especificado en typeName.A method that locates and returns the assembly that is specified in typeName. El nombre del ensamblado se pasa a assemblyResolver como un objeto AssemblyName.The assembly name is passed to assemblyResolver as an AssemblyName object. Si typeName no contiene el nombre de un ensamblado, no se llama a assemblyResolver.If typeName does not contain the name of an assembly, assemblyResolver is not called. Si no se proporciona assemblyResolver, se realiza la resolución de ensamblados estándar.If assemblyResolver is not supplied, standard assembly resolution is performed.

Precaución No pase métodos de llamadores desconocidos o que no sean de confianza.Caution Do not pass methods from unknown or untrusted callers. Hacerlo podría tener como resultado la elevación de privilegios para el código malintencionado.Doing so could result in elevation of privilege for malicious code. Use solo los métodos que proporciona o con los que está familiarizado.Use only methods that you provide or that you are familiar with.

typeResolver
Func<Assembly,String,Boolean,Type>

Método que busca y devuelve el tipo especificado por typeName del ensamblado devuelto por assemblyResolver o mediante la resolución de ensamblados estándar.A method that locates and returns the type that is specified by typeName from the assembly that is returned by assemblyResolver or by standard assembly resolution. Si no se proporciona ningún ensamblado, el método podrá proporcionar uno.If no assembly is provided, the method can provide one. El método también toma un parámetro que especifica si se va a realizar una búsqueda sin distinguir mayúsculas de minúsculas; se pasa el valor de ignoreCase a ese 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.

Precaución No pase métodos de llamadores desconocidos o que no sean de confianza.Caution Do not pass methods from unknown or untrusted callers.

throwOnError
Boolean Boolean Boolean Boolean

Es true para producir una excepción si no se puede encontrar el tipo; es false para devolver null.true to throw an exception if the type cannot be found; false to return null. Si se especifica false se suprimen otras condiciones de excepción, pero no todas.Specifying false also suppresses some other exception conditions, but not all of them. Vea la sección Excepciones.See the Exceptions section.

ignoreCase
Boolean Boolean Boolean Boolean

true para realizar una búsqueda de typeName que no distinga entre mayúsculas y minúsculas; false para realizar una búsqueda de typeName que distinga entre mayúsculas y minúsculas.true to perform a case-insensitive search for typeName, false to perform a case-sensitive search for typeName.

Devoluciones

Tipo con el nombre especificado.The type with the specified name. Si el tipo no se encuentra, el parámetro throwOnError especifica si se devuelve null o se produce una excepción.If the type is not found, the throwOnError parameter specifies whether null is returned or an exception is thrown. En algunos casos, se produce una excepción con independencia del valor de throwOnError.In some cases, an exception is thrown regardless of the value of throwOnError. Vea la sección Excepciones.See the Exceptions section.

Excepciones

Se invoca un inicializador de clase y genera una excepción.A class initializer is invoked and throws an exception.

throwOnError es true y no se encuentra el tipo.throwOnError is true and the type is not found.

O bien-or- throwOnError es true y typeName contiene caracteres no válidos, como una pestaña insertada.throwOnError is true and typeName contains invalid characters, such as an embedded tab. O bien-or- throwOnError es true y typeName es una cadena vacía.throwOnError is true and typeName is an empty string.

O bien-or- throwOnError es true y typeName representa un tipo de matriz con un tamaño no válido.throwOnError is true and typeName represents an array type with an invalid size.

O bien-or- typeName representa una matriz de TypedReference.typeName represents an array of TypedReference.

Se produce un error si el analizador obtiene de typeName un nombre de tipo y un nombre de ensamblado (por ejemplo, cuando el nombre de tipo simple incluye un carácter especial sin 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).

O bien-or- throwOnError es true y typeName contiene sintaxis no válida (por ejemplo, "MyType[,*,]").throwOnError is true and typeName contains invalid syntax (for example, "MyType[,*,]").

O bien-or- typeName representa un tipo genérico que tiene un tipo de puntero, un tipo ByRef o Void como uno de sus argumentos de tipo.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

O bien-or- typeName representa un tipo genérico que tiene un número incorrecto de argumentos de tipo.typeName represents a generic type that has an incorrect number of type arguments.

O bien-or- typeName representa un tipo genérico y uno de sus argumentos de tipo no satisface las restricciones del parámetro de tipo correspondiente.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

throwOnError es true y no se encontró el ensamblado o alguna de sus dependencias.throwOnError is true and the assembly or one of its dependencies was not found.

Se encontró el ensamblado o una de sus dependencias, pero no se pudo cargar.The assembly or one of its dependencies was found, but could not be loaded.

O bien-or- typeName contiene un nombre de ensamblado no válido.typeName contains an invalid assembly name.

O bien-or- typeName es un nombre de ensamblado válido sin un nombre de tipo.typeName is a valid assembly name without a type name.

El ensamblado o alguna de sus dependencias no son válidos.The assembly or one of its dependencies is not valid.

O bien-or- El ensamblado se compiló con una versión de Common Language Runtime posterior a la versión que está cargada actualmente.The assembly was compiled with a later version of the common language runtime than the version that is currently loaded.

Comentarios

Utilice esta sobrecarga del método y sus sobrecargas asociadas (GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) y GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean)) para reemplazar la implementación predeterminada de la GetType método con las implementaciones más flexibles.Use this method overload and its associated overloads (GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) and GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean)) to replace the default implementation of the GetType method with more flexible implementations. Al proporcionar sus propios métodos que se resuelven los nombres de tipo y los nombres de los ensamblados que los contienen, puede hacer lo siguiente:By providing your own methods that resolve type names and the names of the assemblies that contain them, you can do the following:

  • Controlar qué versión de un ensamblado se carga un tipo de.Control which version of an assembly a type is loaded from.

  • Proporcionar otro lugar para buscar un nombre de tipo que no incluya un nombre de ensamblado.Provide another place to look for a type name that does not include an assembly name.

  • Cargar ensamblados con nombres de ensamblado parciales.Load assemblies using partial assembly names.

  • Devolver las subclases de System.Type no creados por common language runtime (CLR).Return subclasses of System.Type that are not created by the common language runtime (CLR).

Por ejemplo, en la serialización tolerante a versiones este método le permite buscar un ensamblado de "ajuste perfecto" mediante un nombre parcial.For example, in version-tolerant serialization this method enables you to search for a "best fit" assembly by using a partial name. Otras sobrecargas de los GetType método requiere un nombre de tipo calificado con el ensamblado, que incluye el número de versión.Other overloads of the GetType method require an assembly-qualified type name, which includes the version number.

Implementaciones alternativas del sistema de tipos que deba devolver las subclases de System.Type que no se crean mediante CLR; todos los tipos que son devueltos por otras sobrecargas de los GetType método son tipos de tiempo de ejecución.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

Esta sobrecarga del método y sus sobrecargas asociadas analizar typeName en el nombre de un tipo y el nombre de un ensamblado y, a continuación, resolver los nombres.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. Resolución del nombre del ensamblado se produce antes de la resolución del nombre de tipo, porque se debe resolver un nombre de tipo en el contexto de un ensamblado.Resolution of the assembly name occurs before resolution of the type name, because a type name must be resolved in the context of an assembly.

Nota

Si no está familiarizado con el concepto de nombres de tipo calificado con el ensamblado, vea el AssemblyQualifiedName propiedad.If you are unfamiliar with the concept of assembly-qualified type names, see the AssemblyQualifiedName property.

Si typeName no es un nombre completo de ensamblado, se omite la resolución de ensamblado.If typeName is not an assembly-qualified name, assembly resolution is skipped. Se pueden resolver los nombres de tipo no calificado en el contexto de Mscorlib.dll o el ensamblado actualmente en ejecución, o puede proporcionar opcionalmente un ensamblado en el typeResolver 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. Los efectos de incluir u omitir el nombre del ensamblado para diferentes tipos de resolución de nombres se muestran como una tabla en la la resolución de nombres mixtos sección.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 general:General usage notes:

  • No pase métodos a assemblyResolver o typeResolver si proceden de llamadores desconocidos o que no se confía.Do not pass methods to assemblyResolver or typeResolver if they come from unknown or untrusted callers. Use solo los métodos que proporciona o con los que está familiarizado.Use only methods that you provide or that you are familiar with.

    Precaución

    Mediante métodos de llamadores desconocidos o no confiables podría provocar la elevación de privilegios para el código malintencionado.Using methods from unknown or untrusted callers could result in elevation of privilege for malicious code.

  • Si se omite el assemblyResolver o typeResolver parámetros, el valor de la throwOnError parámetro se pasa a los métodos que realizan la resolución predeterminada.If you omit the assemblyResolver and/or typeResolver parameters, the value of the throwOnError parameter is passed to the methods that perform the default resolution.

  • Si throwOnError es true, este método produce una TypeLoadException cuando typeResolver devuelve nully un FileNotFoundException cuando assemblyResolver devuelve null.If throwOnError is true, this method throws a TypeLoadException when typeResolver returns null, and a FileNotFoundException when assemblyResolver returns null.

  • Este método no detecta las excepciones producidas por assemblyResolver y typeResolver.This method does not catch exceptions thrown by assemblyResolver and typeResolver. Usted es responsable de las excepciones producidas por los métodos de resolución.You are responsible for any exceptions that are thrown by the resolver methods.

Resolver ensambladosResolving Assemblies

El assemblyResolver método recibe una AssemblyName objeto, que se produce al analizar el nombre del ensamblado de cadena que se incluye en typeName.The assemblyResolver method receives an AssemblyName object, which is produced by parsing the string assembly name that is included in typeName. Si typeName no contiene un nombre de ensamblado, assemblyResolver no se llama y null se pasa a typeResolver.If typeName does not contain an assembly name, assemblyResolver is not called and null is passed to typeResolver.

Si assemblyResolver no es el ensamblado proporcionado, estándar de sondeo se usa para buscar el ensamblado.If assemblyResolver is not supplied, standard assembly probing is used to locate the assembly. Si assemblyResolver se proporciona, el GetType método realiza la búsqueda estándar; en ese caso debe asegurarse de que su assemblyResolver puede administrar todos los ensamblados que se pasa a él.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.

El assemblyResolver método debe devolver null si no se puede resolver el ensamblado.The assemblyResolver method should return null if the assembly cannot be resolved. Si assemblyResolver devuelve null, typeResolver no se llama y se produce la ningún procesamiento adicional; además, si throwOnError es true, un FileNotFoundException se produce.If assemblyResolver returns null, typeResolver is not called and no further processing occurs; additionally, if throwOnError is true, a FileNotFoundException is thrown.

Si el AssemblyName que se pasa a assemblyResolver es una parcial nombre, una o varias de sus partes son null.If the AssemblyName that is passed to assemblyResolver is a partial name, one or more of its parts are null. Por ejemplo, si no tiene versión, la Version propiedad es null.For example, if it has no version, the Version property is null. Si el Version propiedad, el CultureInfo propiedad y el GetPublicKeyToken método devuelven null, a continuación, solo el nombre sencillo del ensamblado se ha proporcionado.If the Version property, the CultureInfo property, and the GetPublicKeyToken method all return null, then only the simple name of the assembly was supplied. El assemblyResolver método puede usar o ignorar todas las partes del nombre del ensamblado.The assemblyResolver method can use or ignore all parts of the assembly name.

Los efectos de las opciones de resolución de ensamblado diferentes se muestran como una tabla en la la resolución de nombres mixtos sección para nombres de tipo simple y completo de ensamblado.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.

Resolución de tiposResolving Types

Si typeName no especifica un nombre de ensamblado, typeResolver siempre se llama.If typeName does not specify an assembly name, typeResolver is always called. Si typeName especifica un nombre de ensamblado, typeResolver sólo se llama cuando el nombre de ensamblado se resuelve correctamente.If typeName specifies an assembly name, typeResolver is called only when the assembly name is successfully resolved. Si assemblyResolver o ensamblado estándar sondeo devuelve null, typeResolver no se llama.If assemblyResolver or standard assembly probing returns null, typeResolver is not called.

El typeResolver método recibe tres argumentos:The typeResolver method receives three arguments:

  • El ensamblado para buscar o null si typeName no contiene un nombre de ensamblado.The assembly to search or null if typeName does not contain an assembly name.

  • Nombre del tipo simple.The simple name of the type. En el caso de un tipo anidado, se trata del tipo de contenedor más externo.In the case of a nested type, this is the outermost containing type. En el caso de un tipo genérico, esto es el nombre simple del tipo genérico.In the case of a generic type, this is the simple name of the generic type.

  • Un valor booleano que es true si el caso de nombres de tipo se va a omitir.A Boolean value that is true if the case of type names is to be ignored.

La implementación determina la manera en que se usan estos argumentos.The implementation determines the way these arguments are used. El typeResolver método debe devolver null si no se puede resolver el tipo.The typeResolver method should return null if it cannot resolve the type. Si typeResolver devuelve null y throwOnError es true, esta sobrecarga de GetType produce una TypeLoadException.If typeResolver returns null and throwOnError is true, this overload of GetType throws a TypeLoadException.

Se muestran los efectos de las opciones de resolución de tipo diferente como una tabla en la la resolución de nombres mixtos sección para nombres de tipo simple y completo de ensamblado.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.

Resolución de tipos anidadosResolving Nested Types

Si typeName es un tipo anidado, solo el nombre del exterior que contiene el tipo se pasa a typeResolver.If typeName is a nested type, only the name of the outermost containing type is passed to typeResolver. Cuando typeResolver devuelve este tipo, el GetNestedType se llama al método de forma recursiva hasta que se ha resuelto el tipo anidado más interno.When typeResolver returns this type, the GetNestedType method is called recursively until the innermost nested type has been resolved.

Resolución de tipos genéricosResolving Generic Types

El GetType se denomina de forma recursiva para resolver tipos genéricos: En primer lugar para resolver el tipo genérico en Sí y, a continuación, para resolver sus 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. Si un argumento de tipo es genérico, GetType se llama de forma recursiva para resolver sus argumentos de tipo y así sucesivamente.If a type argument is generic, GetType is called recursively to resolve its type arguments, and so on.

La combinación de assemblyResolver y typeResolver que proporcione debe ser capaz de resolver todos los niveles de esta recursividad.The combination of assemblyResolver and typeResolver that you provide must be capable of resolving all levels of this recursion. Por ejemplo, suponga que proporciona un assemblyResolver que controla la carga de MyAssembly.For example, suppose you supply an assemblyResolver that controls the loading of MyAssembly. Suponga que desea resolver el tipo genérico Dictionary<string, MyType> (Dictionary(Of String, MyType) en Visual Basic).Suppose you want to resolve the generic type Dictionary<string, MyType> (Dictionary(Of String, MyType) in Visual Basic). Es posible que pase el siguiente nombre de tipo genérico:You might pass the following generic type name:

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

Tenga en cuenta que MyType es el argumento de tipo calificado con el ensamblado solo.Notice that MyType is the only assembly-qualified type argument. Los nombres de los Dictionary<TKey,TValue> y String clases no son calificado del ensamblado.The names of the Dictionary<TKey,TValue> and String classes are not assembly-qualified. Su typeResolver debe ser capaz de identificador en un ensamblado o null, porque recibirá null para Dictionary<TKey,TValue> y String.Your typeResolver must be able handle either an assembly or null, because it will receive null for Dictionary<TKey,TValue> and String. Ese caso puede controlar mediante una llamada a una sobrecarga de la GetType método que toma una cadena, porque ambos de los nombres de tipo incompletos están en 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)
                     ); 

El assemblyResolver método no se llama para el tipo de diccionario y el tipo de cadena, porque esos nombres de tipo no están calificado con el ensamblado.The assemblyResolver method is not called for the dictionary type and the string type, because those type names are not assembly-qualified.

Ahora, supongamos que en lugar de System.String, el primer tipo de argumento genérico es YourType, desde YourAssembly:Now suppose that instead of System.String, the first generic argument type is YourType, from YourAssembly:

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

Dado que este ensamblado es Mscorlib.dll ni ensamblado actualmente en ejecución, no puede resolver YourType sin un nombre completo de ensamblado.Because this assembly is neither Mscorlib.dll nor the currently executing assembly, you cannot resolve YourType without an assembly-qualified name. Dado que su assemblyResolve será llama de forma recursiva, debe ser capaz de controlar este caso.Because your assemblyResolve will be called recursively, it must be able to handle this case. En lugar de devolver null para los ensamblados que no sea MyAssembly, ahora realiza una carga de ensamblados con el AssemblyName objeto.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
                      ); 

Volver a notas de uso.Back to Usage Notes.

Resolución de nombres de tipo con caracteres especialesResolving Type Names with Special Characters

Ciertos caracteres tienen significados especiales en los nombres de ensamblado.Certain characters have special meanings in assembly-qualified names. Si un nombre de tipo simple contiene estos caracteres, los caracteres producen errores de análisis cuando el nombre simple es parte de un nombre completo de ensamblado.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 los errores del análisis, debe realizar el escape los caracteres especiales con una barra diagonal inversa antes de pasar el nombre completo de ensamblado para el GetType 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 ejemplo, si un tipo se denomina Strange]Type, debe agregarse el carácter de escape delante del corchete como sigue: Strange\]Type.For example, if a type is named Strange]Type, the escape character must be added ahead of the square bracket as follows: Strange\]Type.

Nota

Los nombres de los caracteres especiales no se puede crear en Visual Basic o C#, pero se pueden crear mediante el lenguaje intermedio de Microsoft (MSIL) o emitir ensamblados 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.

La siguiente tabla muestra los caracteres especiales para nombres de tipo.The following table shows the special characters for type names.

CarácterCharacter SignificadoMeaning
, (coma), (comma) Delimitador para los nombres de ensamblado.Delimiter for assembly-qualified names.
[] (los corchetes)[] (square brackets) Como un par de sufijo, indica un tipo de matriz; como un par de delimitadores, incluye las listas de argumentos genéricos y los nombres de ensamblado.As a suffix pair, indicates an array type; as a delimiter pair, encloses generic argument lists and assembly-qualified names.
& (y comercial)& (ampersand) Como sufijo, indica que un tipo es un tipo de referencia.As a suffix, indicates that a type is a reference type.
* (asterisco)* (asterisk) Como sufijo, indica que un tipo es un tipo de puntero.As a suffix, indicates that a type is a pointer type.
+ (signo más)+ (plus) Delimitador para los tipos anidados.Delimiter for nested types.
\ (barra diagonal inversa)\ (backslash) Carácter de escape.Escape character.

Propiedades, como AssemblyQualifiedName devuelven correctamente cadenas de caracteres de escape.Properties such as AssemblyQualifiedName return correctly escaped strings. Debe pasar correctamente cadenas de escape para el GetType método.You must pass correctly escaped strings to the GetType method. A su vez, el GetType método pasa los nombres de escape correctamente a typeResolver y a los métodos de resolución de tipo predeterminado.In turn, the GetType method passes correctly escaped names to typeResolver and to the default type resolution methods. Si necesita comparar un nombre con un nombre sin escape en typeResolver, debe quitar los caracteres de escape.If you need to compare a name to an unescaped name in typeResolver, you must remove the escape characters.

Volver a notas de uso.Back to Usage Notes.

Resolución de nombres mixtosMixed Name Resolution

En la tabla siguiente se resume las interacciones entre assemblyResolver, typeResolver, resolución de nombres predeterminado, para todas las combinaciones de nombre de tipo y nombre del ensamblado y typeName:The following table summarizes the interactions between assemblyResolver, typeResolver, and default name resolution, for all combinations of type name and assembly name in typeName:

Contenido del nombre de tipoContents of type name Método de resolución de ensambladoAssembly resolver method Método de resolución de tipoType resolver method ResultadoResult
tipo de ensambladotype, assembly nulonull nulonull Equivalente a llamar a la Type.GetType(String, Boolean, Boolean) sobrecarga del método.Equivalent to calling the Type.GetType(String, Boolean, Boolean) method overload.
tipo de ensambladotype, assembly Proporcionaprovided nulonull assemblyResolver Devuelve el ensamblado o devuelve null si no se puede resolver el ensamblado.assemblyResolver returns the assembly or returns null if it cannot resolve the assembly. Si el ensamblado se ha resuelto, el Assembly.GetType(String, Boolean, Boolean) sobrecarga del método se usa para cargar el tipo del ensamblado; en caso contrario, no hay ningún intento para resolver el 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 de ensambladotype, assembly nulonull Proporcionaprovided Equivalente a poner el nombre del ensamblado a un AssemblyName objeto y llamar a la Assembly.Load(AssemblyName) sobrecarga del método para obtener el ensamblado.Equivalent to converting the assembly name to an AssemblyName object and calling the Assembly.Load(AssemblyName) method overload to get the assembly. Si el ensamblado se ha resuelto, se pasa a typeResolver; en caso contrario, typeResolver no se llama y no hay ningún intento adicional para resolver el 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 de ensambladotype, assembly Proporcionaprovided Proporcionaprovided assemblyResolver Devuelve el ensamblado o devuelve null si no se puede resolver el ensamblado.assemblyResolver returns the assembly or returns null if it cannot resolve the assembly. Si el ensamblado se ha resuelto, se pasa a typeResolver; en caso contrario, typeResolver no se llama y no hay ningún intento adicional para resolver el 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.
typetype null, proporcionadonull, provided nulonull Equivalente a llamar a la Type.GetType(String, Boolean, Boolean) sobrecarga del método.Equivalent to calling the Type.GetType(String, Boolean, Boolean) method overload. Porque no se proporcionó el nombre del ensamblado, se buscan solo Mscorlib.dll y ensamblado actualmente en ejecución.Because the assembly name is not provided, only Mscorlib.dll and the currently executing assembly are searched. Si assemblyResolver es siempre se omite.If assemblyResolver is provided, it is ignored.
typetype null, proporcionadonull, provided Proporcionaprovided typeResolver se llama a, y null se pasa para el ensamblado.typeResolver is called, and null is passed for the assembly. typeResolver puede proporcionar un tipo de cualquier ensamblado, incluidos los ensamblados que carga para el propósito.typeResolver can provide a type from any assembly, including assemblies it loads for the purpose. Si assemblyResolver es siempre se omite.If assemblyResolver is provided, it is ignored.
ensambladoassembly null, proporcionadonull, provided null, proporcionadonull, provided Un FileLoadException se produce porque el nombre del ensamblado se analiza como si fuese un nombre de tipo calificado con el ensamblado.A FileLoadException is thrown, because the assembly name is parsed as if it were an assembly-qualified type name. Esto da como resultado un nombre de ensamblado no válido.This results in an invalid assembly name.

Realizar copias en: Notas de uso, resolver ensamblados, resolver tipos.Back to: Usage Notes, Resolving Assemblies, Resolving Types.

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)

Obtiene el tipo con el nombre indicado, que especifica si se va a iniciar una excepción en caso de que el tipo no se encuentre y que, de manera opcional, puede proporcionar métodos personalizados para resolver el ensamblado y el 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

Nombre del tipo que se va a obtener.The name of the type to get. Si se proporciona el parámetro typeResolver, el nombre del tipo puede ser cualquier cadena que typeResolver pueda resolver.If the typeResolver parameter is provided, the type name can be any string that typeResolver is capable of resolving. Si se proporciona el parámetro assemblyResolver o se usa la resolución de tipos estándar, typeName debe ser un nombre calificado con el ensamblado (vea AssemblyQualifiedName), a menos que el tipo esté en el ensamblado que se ejecuta actualmente o en Mscorlib.dll, en cuyo caso basta con aplicar el nombre de tipo calificado con su espacio de nombres.If the assemblyResolver parameter is provided or if standard type resolution is used, typeName must be an assembly-qualified name (see AssemblyQualifiedName), unless the type is in the currently executing assembly or in Mscorlib.dll, in which case it is sufficient to supply the type name qualified by its namespace.

assemblyResolver
Func<AssemblyName,Assembly>

Método que busca y devuelve el ensamblado especificado en typeName.A method that locates and returns the assembly that is specified in typeName. El nombre del ensamblado se pasa a assemblyResolver como un objeto AssemblyName.The assembly name is passed to assemblyResolver as an AssemblyName object. Si typeName no contiene el nombre de un ensamblado, no se llama a assemblyResolver.If typeName does not contain the name of an assembly, assemblyResolver is not called. Si no se proporciona assemblyResolver, se realiza la resolución de ensamblados estándar.If assemblyResolver is not supplied, standard assembly resolution is performed.

Precaución No pase métodos de llamadores desconocidos o que no sean de confianza.Caution Do not pass methods from unknown or untrusted callers. Hacerlo podría tener como resultado la elevación de privilegios para el código malintencionado.Doing so could result in elevation of privilege for malicious code. Use solo los métodos que proporciona o con los que está familiarizado.Use only methods that you provide or that you are familiar with.

typeResolver
Func<Assembly,String,Boolean,Type>

Método que busca y devuelve el tipo especificado por typeName del ensamblado devuelto por assemblyResolver o mediante la resolución de ensamblados estándar.A method that locates and returns the type that is specified by typeName from the assembly that is returned by assemblyResolver or by standard assembly resolution. Si no se proporciona ningún ensamblado, el método podrá proporcionar uno.If no assembly is provided, the method can provide one. El método también toma un parámetro que especifica si se va a realizar una búsqueda sin distinguir mayúsculas de minúsculas; se pasa false a ese parámetro.The method also takes a parameter that specifies whether to perform a case-insensitive search; false is passed to that parameter.

Precaución No pase métodos de llamadores desconocidos o que no sean de confianza.Caution Do not pass methods from unknown or untrusted callers.

throwOnError
Boolean Boolean Boolean Boolean

Es true para producir una excepción si no se puede encontrar el tipo; es false para devolver null.true to throw an exception if the type cannot be found; false to return null. Si se especifica false se suprimen otras condiciones de excepción, pero no todas.Specifying false also suppresses some other exception conditions, but not all of them. Vea la sección Excepciones.See the Exceptions section.

Devoluciones

Tipo con el nombre especificado.The type with the specified name. Si el tipo no se encuentra, el parámetro throwOnError especifica si se devuelve null o se produce una excepción.If the type is not found, the throwOnError parameter specifies whether null is returned or an exception is thrown. En algunos casos, se produce una excepción con independencia del valor de throwOnError.In some cases, an exception is thrown regardless of the value of throwOnError. Vea la sección Excepciones.See the Exceptions section.

Excepciones

Se invoca un inicializador de clase y genera una excepción.A class initializer is invoked and throws an exception.

throwOnError es true y no se encuentra el tipo.throwOnError is true and the type is not found.

O bien-or- throwOnError es true y typeName contiene caracteres no válidos, como una pestaña insertada.throwOnError is true and typeName contains invalid characters, such as an embedded tab. O bien-or- throwOnError es true y typeName es una cadena vacía.throwOnError is true and typeName is an empty string.

O bien-or- throwOnError es true y typeName representa un tipo de matriz con un tamaño no válido.throwOnError is true and typeName represents an array type with an invalid size.

O bien-or- typeName representa una matriz de TypedReference.typeName represents an array of TypedReference.

Se produce un error si el analizador obtiene de typeName un nombre de tipo y un nombre de ensamblado (por ejemplo, cuando el nombre de tipo simple incluye un carácter especial sin 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).

O bien-or- throwOnError es true y typeName contiene sintaxis no válida (por ejemplo, "MyType[,*,]").throwOnError is true and typeName contains invalid syntax (for example, "MyType[,*,]").

O bien-or- typeName representa un tipo genérico que tiene un tipo de puntero, un tipo ByRef o Void como uno de sus argumentos de tipo.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

O bien-or- typeName representa un tipo genérico que tiene un número incorrecto de argumentos de tipo.typeName represents a generic type that has an incorrect number of type arguments.

O bien-or- typeName representa un tipo genérico y uno de sus argumentos de tipo no satisface las restricciones del parámetro de tipo correspondiente.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

throwOnError es true y no se encontró el ensamblado o alguna de sus dependencias.throwOnError is true and the assembly or one of its dependencies was not found.

O bien-or- typeName contiene un nombre de ensamblado no válido.typeName contains an invalid assembly name.

O bien-or- typeName es un nombre de ensamblado válido sin un nombre de tipo.typeName is a valid assembly name without a type name.

Se encontró el ensamblado o una de sus dependencias, pero no se pudo cargar.The assembly or one of its dependencies was found, but could not be loaded.

El ensamblado o alguna de sus dependencias no son válidos.The assembly or one of its dependencies is not valid.

O bien-or- El ensamblado se compiló con una versión de Common Language Runtime posterior a la versión que está cargada actualmente.The assembly was compiled with a later version of the common language runtime than the version that is currently loaded.

Comentarios

Escenarios de uso para este método y los detalles sobre la assemblyResolver y typeResolver parámetros pueden encontrarse en el GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) sobrecarga del 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.

Llamar a esta sobrecarga del método es igual que llamar a la GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) sobrecarga del método y especificando false para el ignoreCase 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>) 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>)

Obtiene el tipo con el nombre especificado, que, de manera opcional, puede proporcionar métodos personalizados para resolver el ensamblado y el 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

Nombre del tipo que se va a obtener.The name of the type to get. Si se proporciona el parámetro typeResolver, el nombre del tipo puede ser cualquier cadena que typeResolver pueda resolver.If the typeResolver parameter is provided, the type name can be any string that typeResolver is capable of resolving. Si se proporciona el parámetro assemblyResolver o se usa la resolución de tipos estándar, typeName debe ser un nombre calificado con el ensamblado (vea AssemblyQualifiedName), a menos que el tipo esté en el ensamblado que se ejecuta actualmente o en Mscorlib.dll, en cuyo caso basta con aplicar el nombre de tipo calificado con su espacio de nombres.If the assemblyResolver parameter is provided or if standard type resolution is used, typeName must be an assembly-qualified name (see AssemblyQualifiedName), unless the type is in the currently executing assembly or in Mscorlib.dll, in which case it is sufficient to supply the type name qualified by its namespace.

assemblyResolver
Func<AssemblyName,Assembly>

Método que busca y devuelve el ensamblado especificado en typeName.A method that locates and returns the assembly that is specified in typeName. El nombre del ensamblado se pasa a assemblyResolver como un objeto AssemblyName.The assembly name is passed to assemblyResolver as an AssemblyName object. Si typeName no contiene el nombre de un ensamblado, no se llama a assemblyResolver.If typeName does not contain the name of an assembly, assemblyResolver is not called. Si no se proporciona assemblyResolver, se realiza la resolución de ensamblados estándar.If assemblyResolver is not supplied, standard assembly resolution is performed.

Precaución No pase métodos de llamadores desconocidos o que no sean de confianza.Caution Do not pass methods from unknown or untrusted callers. Hacerlo podría tener como resultado la elevación de privilegios para el código malintencionado.Doing so could result in elevation of privilege for malicious code. Use solo los métodos que proporciona o con los que está familiarizado.Use only methods that you provide or that you are familiar with.

typeResolver
Func<Assembly,String,Boolean,Type>

Método que busca y devuelve el tipo especificado por typeName del ensamblado devuelto por assemblyResolver o mediante la resolución de ensamblados estándar.A method that locates and returns the type that is specified by typeName from the assembly that is returned by assemblyResolver or by standard assembly resolution. Si no se proporciona ningún ensamblado, el método typeResolver podrá proporcionar uno.If no assembly is provided, the typeResolver method can provide one. El método también toma un parámetro que especifica si se va a realizar una búsqueda sin distinguir mayúsculas de minúsculas; se pasa false a ese parámetro.The method also takes a parameter that specifies whether to perform a case-insensitive search; false is passed to that parameter.

Precaución No pase métodos de llamadores desconocidos o que no sean de confianza.Caution Do not pass methods from unknown or untrusted callers.

Devoluciones

Tipo con el nombre especificado, o null si no se encuentra el tipo.The type with the specified name, or null if the type is not found.

Excepciones

Se invoca un inicializador de clase y genera una excepción.A class initializer is invoked and throws an exception.

Se produce un error cuando typeName se analiza en un nombre de tipo y un nombre de ensamblado (por ejemplo, cuando el nombre de tipo simple incluye un carácter especial sin 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).

O bien-or- typeName representa un tipo genérico que tiene un tipo de puntero, un tipo ByRef o Void como uno de sus argumentos de tipo.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

O bien-or- typeName representa un tipo genérico que tiene un número incorrecto de argumentos de tipo.typeName represents a generic type that has an incorrect number of type arguments.

O bien-or- typeName representa un tipo genérico y uno de sus argumentos de tipo no satisface las restricciones del parámetro de tipo correspondiente.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

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

Se encontró el ensamblado o una de sus dependencias, pero no se pudo cargar.The assembly or one of its dependencies was found, but could not be loaded.

O bien-or- typeName contiene un nombre de ensamblado no válido.typeName contains an invalid assembly name.

O bien-or- typeName es un nombre de ensamblado válido sin un nombre de tipo.typeName is a valid assembly name without a type name.

El ensamblado o alguna de sus dependencias no son válidos.The assembly or one of its dependencies is not valid.

O bien-or- El ensamblado se compiló con una versión de Common Language Runtime posterior a la versión que está cargada actualmente.The assembly was compiled with a later version of the common language runtime than the version that is currently loaded.

Comentarios

Escenarios de uso para este método y los detalles sobre la assemblyResolver y typeResolver parámetros pueden encontrarse en el GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) sobrecarga del 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.

Nota

Si typeName no se encuentra, la llamada a la GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) devuelve del método null.If typeName cannot be found, the call to the GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) method returns null. No se produce una excepción.It does not throw an exception. Para controlar si se produce una excepción, llamar a una sobrecarga de la GetType método que tiene un throwOnError parámetro.To control whether an exception is thrown, call an overload of the GetType method that has a throwOnError parameter.

Llamar a esta sobrecarga del método es igual que llamar a la GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) sobrecarga del método y especificando false para el throwOnError y ignoreCase parámetros.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() GetType() GetType() GetType()

Obtiene la estructura Type actual.Gets the current Type.

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

Devoluciones

Objeto Type actual.The current Type.

Implementaciones

Excepciones

Se invoca un inicializador de clase y genera una excepción.A class initializer is invoked and throws an exception.

Consulte también:

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

Obtiene el objeto Type con el nombre especificado, que realiza una búsqueda donde se distingue entre mayúsculas y minúsculas y especifica si se va a producir o no una excepción si no se encuentra el tipo.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

Nombre calificado con el ensamblado del tipo que se va a obtener.The assembly-qualified name of the type to get. Vea AssemblyQualifiedName.See AssemblyQualifiedName. Si el tipo está en el ensamblado que se ejecuta actualmente o en Mscorlib.dll, es suficiente para proporcionar el nombre completo del tipo por su espacio de nombres.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

Es true para producir una excepción si no se puede encontrar el tipo; es false para devolver null.true to throw an exception if the type cannot be found; false to return null. Si se especifica false se suprimen otras condiciones de excepción, pero no todas.Specifying false also suppresses some other exception conditions, but not all of them. Vea la sección Excepciones.See the Exceptions section.

Devoluciones

Tipo con el nombre especificado.The type with the specified name. Si el tipo no se encuentra, el parámetro throwOnError especifica si se devuelve null o se produce una excepción.If the type is not found, the throwOnError parameter specifies whether null is returned or an exception is thrown. En algunos casos, se produce una excepción con independencia del valor de throwOnError.In some cases, an exception is thrown regardless of the value of throwOnError. Vea la sección Excepciones.See the Exceptions section.

Excepciones

Se invoca un inicializador de clase y genera una excepción.A class initializer is invoked and throws an exception.

throwOnError es true y no se encuentra el tipo.throwOnError is true and the type is not found.

O bien-or- throwOnError es true y typeName contiene caracteres no válidos, como una pestaña insertada.throwOnError is true and typeName contains invalid characters, such as an embedded tab. O bien-or- throwOnError es true y typeName es una cadena vacía.throwOnError is true and typeName is an empty string.

O bien-or- throwOnError es true y typeName representa un tipo de matriz con un tamaño no válido.throwOnError is true and typeName represents an array type with an invalid size.

O bien-or- typeName representa una matriz de TypedReference.typeName represents an array of TypedReference.

throwOnError es true y typeName contiene sintaxis no válida.throwOnError is true and typeName contains invalid syntax. Por ejemplo: "MyType[,*,]".For example, "MyType[,*,]".

O bien-or- typeName representa un tipo genérico que tiene un tipo de puntero, un tipo ByRef o Void como uno de sus argumentos de tipo.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

O bien-or- typeName representa un tipo genérico que tiene un número incorrecto de argumentos de tipo.typeName represents a generic type that has an incorrect number of type arguments.

O bien-or- typeName representa un tipo genérico y uno de sus argumentos de tipo no satisface las restricciones del parámetro de tipo correspondiente.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

throwOnError es true y no se encontró el ensamblado o alguna de sus dependencias.throwOnError is true and the assembly or one of its dependencies was not found.

En .NET para aplicaciones de la Tienda Windows o la Biblioteca de clases portable, capture en su lugar la excepción de clase base, IOException.In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, IOException, instead.

Se encontró el ensamblado o una de sus dependencias, pero no se pudo cargar.The assembly or one of its dependencies was found, but could not be loaded.

El ensamblado o alguna de sus dependencias no son válidos.The assembly or one of its dependencies is not valid.

O bien-or- Actualmente, está cargada la versión 2.0 u otra posterior de Common Language Runtime pero el ensamblado se compiló con una versión posterior.Version 2.0 or later of the common language runtime is currently loaded, and the assembly was compiled with a later version.

Ejemplos

El ejemplo siguiente recupera el tipo de System.Int32 y usa ese objeto de tipo para mostrar el FullName propiedad de System.Int32.The following example retrieves the type of System.Int32 and uses that type object to display the FullName property of System.Int32. Si un objeto de tipo hace referencia a un ensamblado que no existe, este ejemplo produce una excepción.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

Comentarios

Puede usar el GetType método para obtener un Type si sabe su nombre completo de ensamblado que puede obtenerse a partir de objetos para un tipo en otro ensamblado, AssemblyQualifiedName.You can use the GetType method to obtain a Type object for a type in another assembly, if you know its assembly-qualified name which can be obtained from AssemblyQualifiedName. GetType hace que la carga del ensamblado especificado en typeName.GetType causes loading of the assembly specified in typeName. También puede cargar un ensamblado mediante la Load método y, a continuación, utilice el GetType o GetTypes métodos de la Assembly clase para obtener Type objetos.You can also load an assembly using the Load method, and then use the GetType or GetTypes methods of the Assembly class to get Type objects. Si un tipo está en un ensamblado que se sabe que el programa en tiempo de compilación, es más eficaz utilizar typeof en C#, GetType en Visual Basic, o typeid en C++.If a type is in an assembly known to your program at compile time, it is more efficient to use typeof in C#, GetType in Visual Basic, or typeid in C++.

GetType solo funciona en los ensamblados cargados desde el disco.GetType only works on assemblies loaded from disk. Si se llama a GetType para buscar un tipo definido en un ensamblado dinámico definido mediante el System.Reflection.Emit servicios, podría obtener un comportamiento incoherente.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. El comportamiento depende de si el ensamblado dinámico es persistente, es decir, se crea mediante la RunAndSave o Save modos de acceso a la System.Reflection.Emit.AssemblyBuilderAccess enumeración.The behavior depends on whether the dynamic assembly is persistent, that is, created using the RunAndSave or Save access modes of the System.Reflection.Emit.AssemblyBuilderAccess enumeration. Si el ensamblado dinámico es persistente y se ha escrito en el disco antes de GetType es llamado, el cargador busca el ensamblado guardado en disco, carga ese ensamblado y recupera el tipo del ensamblado.If the dynamic assembly is persistent and has been written to disk before GetType is called, the loader finds the saved assembly on disk, loads that assembly, and retrieves the type from that assembly. Si el ensamblado no se ha guardado en el disco cuando GetType se llama, el método devuelve null.If the assembly has not been saved to disk when GetType is called, the method returns null. GetType no entiende los ensamblados dinámicos transitorios; por lo tanto, una llamada a GetType para recuperar un tipo en transitorio devuelve el ensamblado dinámico 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 en un módulo dinámico, suscribirse a la AppDomain.AssemblyResolve eventos y llamadas GetType antes de guardar.To use GetType on a dynamic module, subscribe to the AppDomain.AssemblyResolve event and call GetType before saving. De lo contrario, obtendrá dos copias del ensamblado en la memoria.Otherwise, you will get two copies of the assembly in memory.

El throwOnError parámetro especifica lo que sucede cuando no se encuentra el tipo y también suprime algunas condiciones de excepción, como se describe en la sección excepciones.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. Algunas excepciones se producen independientemente del valor de throwOnError.Some exceptions are thrown regardless of the value of throwOnError. Por ejemplo, si se encuentra el tipo, pero no se puede cargar, un TypeLoadException se produce incluso si throwOnError es false.For example, if the type is found but cannot be loaded, a TypeLoadException is thrown even if throwOnError is false.

La siguiente tabla muestra qué miembros de una clase base se devuelven los Get métodos cuando se reflejan en un tipo.The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

Tipo de miembroMember Type EstáticoStatic No estáticoNon-Static
ConstructorConstructor NoNo NoNo
CampoField NoNo Sí.Yes. Un campo siempre es ocultar por nombre y firma.A field is always hide-by-name-and-signature.
eventoEvent No es aplicableNot applicable La regla del sistema de tipo común es que la herencia es el mismo que el de los métodos que implementa la propiedad.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Reflexión trata las propiedades como ocultar por nombre y firma.Reflection treats properties as hide-by-name-and-signature. Véase la nota 2.See note 2 below.
MétodoMethod NoNo Sí.Yes. Ocultar por nombre o de ocultar por nombre y firma, puede ser un método (virtual y no virtual).A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
Tipo anidadoNested Type NoNo NoNo
Propiedad.Property No es aplicableNot applicable La regla del sistema de tipo común es que la herencia es el mismo que el de los métodos que implementa la propiedad.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Reflexión trata las propiedades como ocultar por nombre y firma.Reflection treats properties as hide-by-name-and-signature. Véase la nota 2.See note 2 below.
  1. Ocultar por nombre y firma considera que todas las partes de la firma, incluidos los modificadores personalizados, devolución tipos, tipos de parámetros, centinelas y las convenciones de llamada no administradas.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. Se trata de una comparación binaria.This is a binary comparison.

  2. Para la reflexión, propiedades y eventos son ocultar por nombre y firma.For reflection, properties and events are hide-by-name-and-signature. Si tiene una propiedad con una operación get y un descriptor de acceso de la clase base, pero la clase derivada tiene solo un descriptor de acceso get, la propiedad de clase derivada oculta la propiedad de clase base y no podrá tener acceso el establecedor de la clase 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. Los atributos personalizados no forman parte de common type system.Custom attributes are not part of the common type system.

Las matrices o los tipos COM no se buscan, a menos que ya se han cargado en la tabla de clases disponibles.Arrays or COM types are not searched for unless they have already been loaded into the table of available classes.

typeName puede ser el nombre de tipo calificado por su espacio de nombres o un nombre completo de ensamblado que incluya una especificación de nombre de ensamblado.typeName can be the type name qualified by its namespace or an assembly-qualified name that includes an assembly name specification. Vea AssemblyQualifiedName.See AssemblyQualifiedName.

Si typeName incluye el espacio de nombres pero no el nombre del ensamblado, este método busca solo ensamblado del objeto que realiza la llamada y Mscorlib.dll, en ese orden.If typeName includes the namespace but not the assembly name, this method searches only the calling object's assembly and Mscorlib.dll, in that order. Si typeName es un nombre completo con el nombre de ensamblado parcial o completo, este método busca en el ensamblado especificado.If typeName is fully qualified with the partial or complete assembly name, this method searches in the specified assembly. Si el ensamblado tiene un nombre seguro, se requiere un nombre de ensamblado completo.If the assembly has a strong name, a complete assembly name is required.

El AssemblyQualifiedName propiedad devuelve un nombre de tipo completo incluido tipos anidados, el nombre del ensamblado y los argumentos genéricos.The AssemblyQualifiedName property returns a fully qualified type name including nested types, the assembly name, and generic arguments. Todos los compiladores compatibles con common language runtime emitirá el nombre sencillo de una clase anidada y la reflexión construirá un nombre con sufijo cuando se consulta, con arreglo a las siguientes convenciones.All compilers that support the common language runtime will emit the simple name of a nested class, and reflection constructs a mangled name when queried, in accordance with the following conventions.

Nota

En la versión 2.0 de .NET Framework, la arquitectura de procesador se agrega a la identidad del ensamblado y se puede especificar como parte de las cadenas de nombre de ensamblado.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 ejemplo, "ProcessorArchitecture = msil".For example, "ProcessorArchitecture=msil". Sin embargo, no se incluye en la cadena devuelta por la AssemblyQualifiedName propiedad, por motivos de compatibilidad.However, it is not included in the string returned by the AssemblyQualifiedName property, for compatibility reasons. También puede cargar tipos mediante la creación de un AssemblyName objeto y pasarlo a una sobrecarga adecuada de la Load método.You can also load types by creating an AssemblyName object and passing it to an appropriate overload of the Load method. A continuación, puede usar el Assembly.GetType método para cargar tipos desde el ensamblado.You can then use the Assembly.GetType method to load types from the assembly. Vea también AssemblyName.ProcessorArchitecture.See also AssemblyName.ProcessorArchitecture.

DelimitadorDelimiter SignificadoMeaning
Barra diagonal inversa (\)Backslash (\) Carácter de escape.Escape character.
Acento grave (')Backtick (`) Precede a uno o más dígitos que representa el número de parámetros de tipo, situado al final del nombre de un 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.
Corchetes ([])Brackets ([]) Incluya una lista de argumentos de tipo genérico, para un tipo genérico construido; dentro de una lista de argumentos de tipo, encierra un tipo calificado con el ensamblado.Enclose a generic type argument list, for a constructed generic type; within a type argument list, enclose an assembly-qualified type.
Coma (,)Comma (,) Precede al nombre de ensamblado.Precedes the Assembly name.
Punto (.)Period (.) Denota los identificadores de espacio de nombres.Denotes namespace identifiers.
Signo más (+)Plus sign (+) Precede a una clase anidada.Precedes a nested class.

Por ejemplo, el nombre completo para una clase podría ser similar al siguiente:For example, the fully qualified name for a class might look like this:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly  

Si el espacio de nombres fuera EspacioNombresPrincipal. Sub+EspacioNombres, la cadena tendría que ir delante del signo más (+) con un carácter de escape (\) para evitar que se va a interpretar como un separador de anidamiento.If the namespace were TopNamespace.Sub+Namespace, then the string would have to precede the plus sign (+) with an escape character (\) to prevent it from being interpreted as a nesting separator. La reflexión emite esta cadena como sigue:Reflection emits this string as follows:

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

Un "++" se convierte en "\+\+" y un "\"se convierte en"\\".A "++" becomes "\+\+", and a "\" becomes "\\".

Este nombre completo puede conservarse y usa más adelante para cargar el Type.This qualified name can be persisted and later used to load the Type. Para buscar y cargar un Type, utilice GetType con el tipo de nombre solo o con el nombre de tipo calificado de ensamblado.To search for and load a Type, use GetType either with the type name only or with the assembly qualified type name. GetType con el tipo de nombre sólo buscará los Type en el ensamblado del llamador y, a continuación, en el ensamblado del sistema.GetType with the type name only will look for the Type in the caller's assembly and then in the System assembly. GetType con el ensamblado de nombre de tipo calificado buscará el Type en cualquier ensamblado.GetType with the assembly qualified type name will look for the Type in any assembly.

Los nombres de tipo pueden contener caracteres finales que denoten información adicional sobre el tipo, por ejemplo, si el tipo es un tipo de referencia, un tipo de puntero o un tipo de 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 el nombre del tipo sin estos caracteres finales, use t.GetElementType().ToString(), donde t es el tipo.To retrieve the type name without these trailing characters, use t.GetElementType().ToString(), where t is the type.

Espacios son relevantes en todos los componentes de nombre de tipo, excepto el nombre del ensamblado.Spaces are relevant in all type name components except the assembly name. En el nombre del ensamblado, espacios antes del separador ',' son relevantes, pero se omiten los espacios detrás del separador ','.In the assembly name, spaces before the ',' separator are relevant, but spaces after the ',' separator are ignored.

El nombre de un tipo genérico finaliza con un acento grave (`) seguido de dígitos que representa el 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. El propósito de este nombre con sufijo es permitir que los compiladores admitir tipos genéricos con el mismo nombre pero con distintos números de parámetros de tipo, que se producen en el mismo ámbito.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 ejemplo, la reflexión devuelve los nombres alterados Tuple1andtupla2 desde los métodos genéricos Tuple(Of T) y Tuple(Of T0, T1) en Visual Basic, o Tuple<T> y tupla\<T0, T1> en 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 los tipos genéricos, la lista de argumentos de tipo se encierra entre corchetes y los argumentos de tipo están separados por comas.For generic types, the type argument list is enclosed in brackets, and the type arguments are separated by commas. Por ejemplo, un tipo genérico Dictionary<TKey,TValue> tiene dos parámetros de tipo.For example, a generic Dictionary<TKey,TValue> has two type parameters. Un Dictionary<TKey,TValue> de MyType con claves de tipo String puede representarse como sigue: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 un tipo calificado con el ensamblado en una lista de argumentos de tipo, incluya el tipo de ensamblado completo entre corchetes.To specify an assembly-qualified type within a type argument list, enclose the assembly-qualified type within brackets. En caso contrario, las comas que separan las partes del nombre completo de ensamblado se interpretan como delimitar los argumentos de tipo adicionales.Otherwise, the commas that separate the parts of the assembly-qualified name are interpreted as delimiting additional type arguments. Por ejemplo, un Dictionary<TKey,TValue> de MyType en MyAssembly.dll, con claves de tipo String, puede especificar como sigue:For example, a Dictionary<TKey,TValue> of MyType from MyAssembly.dll, with keys of type String, might be specified as follows:

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

Nota

Un tipo calificado con el ensamblado puede escribirse entre corchetes solo cuando aparece dentro de una lista de parámetros de tipo.An assembly-qualified type can be enclosed in brackets only when it appears within a type parameter list. Las reglas para buscar los ensamblados de tipos completos e incompletos en listas de parámetros de tipo son las mismas que las reglas para tipos no genéricos completos e incompletos.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.

Tipos que aceptan valores NULL son un caso especial de tipos genéricos.Nullable types are a special case of generic types. Por ejemplo, una que acepta valores NULL Int32 representado por la cadena "System.Nullable'1[System.Int32]".For example, a nullable Int32 is represented by the string "System.Nullable`1[System.Int32]".

Nota

En C#, C++ y Visual Basic también puede obtener los tipos que aceptan valores NULL mediante operadores de tipo.In C#, C++, and Visual Basic you can also get nullable types using type operators. Por ejemplo, el que acepta valores NULL Boolean tipo devuelto por typeof(Nullable<bool>) en C#, por Nullable<Boolean>::typeid en C++ y por GetType(Nullable(Of Boolean)) en 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.

En la tabla siguiente se muestra la sintaxis que usa con GetType para varios tipos.The following table shows the syntax you use with GetType for various types.

Para obtenerTo Get UsarUse
Acepta valores null Int32A nullable Int32 Type.GetType("System.Nullable`1[System.Int32]")
Un puntero no administrado para MyTypeAn unmanaged pointer to MyType Type.GetType("MyType*")
Un puntero no administrado a un puntero a MyTypeAn unmanaged pointer to a pointer to MyType Type.GetType("MyType**")
Un puntero administrado o una referencia a MyTypeA managed pointer or reference to MyType Type.GetType("MyType&").Type.GetType("MyType&"). Tenga en cuenta que, a diferencia de los punteros, las referencias están limitadas a un nivel.Note that unlike pointers, references are limited to one level.
Una clase primaria y una clase anidadaA parent class and a nested class Type.GetType("MyParentClass+MyNestedClass")
Una matriz unidimensional con un límite inferior de 0A one-dimensional array with a lower bound of 0 Type.GetType("MyArray[]")
Una matriz unidimensional con un límite inferior desconocidoA one-dimensional array with an unknown lower bound Type.GetType("MyArray[*]")
Una matriz de n dimensionesAn n-dimensional array Una coma (,) dentro de los corchetes un total de n-1 veces.A comma (,) inside the brackets a total of n-1 times. Por ejemplo, System.Object[,,] representa tridimensional Object matriz.For example, System.Object[,,] represents a three-dimensional Object array.
La matriz de una matriz bidimensionalA two-dimensional array's array Type.GetType("MyArray[][]")
Una matriz bidimensional rectangular con límites inferiores desconocidosA rectangular two-dimensional array with unknown lower bounds Type.GetType("MyArray[,]")
Un tipo genérico con un argumento de tipoA generic type with one type argument Type.GetType("MyGenericType`1[MyType]")
Un tipo genérico con dos argumentos de tipoA generic type with two type arguments Type.GetType("MyGenericType`2[MyType,AnotherType]")
Un tipo genérico con dos argumentos de tipo calificado con el ensambladoA generic type with two assembly-qualified type arguments Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
Un tipo genérico con un argumento de tipo calificado de ensamblado completo de ensambladoAn assembly-qualified generic type with an assembly-qualified type argument Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
Un tipo genérico cuyo argumento de tipo es un tipo genérico con dos argumentos de tipoA generic type whose type argument is a generic type with two type arguments Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")
Consulte también:

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

Obtiene el objeto Type con el nombre especificado, mediante una búsqueda en la que se distingue entre mayúsculas y 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

Nombre calificado con el ensamblado del tipo que se va a obtener.The assembly-qualified name of the type to get. Vea AssemblyQualifiedName.See AssemblyQualifiedName. Si el tipo está en el ensamblado que se ejecuta actualmente o en Mscorlib.dll, es suficiente para proporcionar el nombre completo del tipo por su espacio de nombres.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.

Devoluciones

Tipo con el nombre especificado, si se encuentra; de lo contrario null.The type with the specified name, if found; otherwise, null.

Excepciones

Se invoca un inicializador de clase y genera una excepción.A class initializer is invoked and throws an exception.

typeName representa un tipo genérico que tiene un tipo de puntero, un tipo ByRef o Void como uno de sus argumentos de tipo.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

O bien-or- typeName representa un tipo genérico que tiene un número incorrecto de argumentos de tipo.typeName represents a generic type that has an incorrect number of type arguments.

O bien-or- typeName representa un tipo genérico y uno de sus argumentos de tipo no satisface las restricciones del parámetro de tipo correspondiente.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

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

En .NET para aplicaciones de la Tienda Windows o la Biblioteca de clases portable, capture en su lugar la excepción de clase base, IOException.In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, IOException, instead.

Se encontró el ensamblado o una de sus dependencias, pero no se pudo cargar.The assembly or one of its dependencies was found, but could not be loaded.

El ensamblado o alguna de sus dependencias no son válidos.The assembly or one of its dependencies is not valid.

O bien-or- Actualmente, está cargada la versión 2.0 u otra posterior de Common Language Runtime pero el ensamblado se compiló con una versión posterior.Version 2.0 or later of the common language runtime is currently loaded, and the assembly was compiled with a later version.

Ejemplos

El ejemplo siguiente recupera el tipo de System.Int32 y usa ese objeto de tipo para mostrar el FullName propiedad de System.Int32.The following example retrieves the type of System.Int32 and uses that type object to display the FullName property of System.Int32.

using namespace System;

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

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

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

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

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

         Console.WriteLine()

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

Comentarios

Puede usar el GetType método para obtener un Type si sabe su nombre completo de ensamblado que puede obtenerse a partir de objetos para un tipo en otro ensamblado, AssemblyQualifiedName.You can use the GetType method to obtain a Type object for a type in another assembly, if you know its assembly-qualified name which can be obtained from AssemblyQualifiedName. GetType hace que la carga del ensamblado especificado en typeName.GetType causes loading of the assembly specified in typeName. También puede cargar un ensamblado mediante la Load método y, a continuación, utilice el GetType o GetTypes métodos de la Assembly clase para obtener Type objetos.You can also load an assembly using the Load method, and then use the GetType or GetTypes methods of the Assembly class to get Type objects. Si un tipo está en un ensamblado que se sabe que el programa en tiempo de compilación, es más eficaz utilizar en C#, GetType en Visual Basic o C++.If a type is in an assembly known to your program at compile time, it is more efficient to use in C#, GetType in Visual Basic, or in C++.

Nota

Si typeName no se encuentra, la llamada a la GetType(String) devuelve del método null.If typeName cannot be found, the call to the GetType(String) method returns null. No se produce una excepción.It does not throw an exception. Para controlar si se produce una excepción, llamar a una sobrecarga de la GetType método que tiene un throwOnError parámetro.To control whether an exception is thrown, call an overload of the GetType method that has a throwOnError parameter.

GetType solo funciona en los ensamblados cargados desde el disco.GetType only works on assemblies loaded from disk. Si se llama a GetType para buscar un tipo definido en un ensamblado dinámico definido mediante el System.Reflection.Emit servicios, podría obtener un comportamiento incoherente.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. El comportamiento depende de si el ensamblado dinámico es persistente, es decir, se crea mediante la RunAndSave o Save modos de acceso a la System.Reflection.Emit.AssemblyBuilderAccess enumeración.The behavior depends on whether the dynamic assembly is persistent, that is, created using the RunAndSave or Save access modes of the System.Reflection.Emit.AssemblyBuilderAccess enumeration. Si el ensamblado dinámico es persistente y se ha escrito en el disco antes de GetType es llamado, el cargador busca el ensamblado guardado en disco, carga ese ensamblado y recupera el tipo del ensamblado.If the dynamic assembly is persistent and has been written to disk before GetType is called, the loader finds the saved assembly on disk, loads that assembly, and retrieves the type from that assembly. Si el ensamblado no se ha guardado en el disco cuando GetType se llama, el método devuelve null.If the assembly has not been saved to disk when GetType is called, the method returns null. GetType no entiende los ensamblados dinámicos transitorios; por lo tanto, una llamada a GetType para recuperar un tipo en transitorio devuelve el ensamblado dinámico 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 en un módulo dinámico, suscribirse a la AppDomain.AssemblyResolve eventos y llamadas GetType antes de guardar.To use GetType on a dynamic module, subscribe to the AppDomain.AssemblyResolve event and call GetType before saving. De lo contrario, obtendrá dos copias del ensamblado en la memoria.Otherwise, you will get two copies of the assembly in memory.

La siguiente tabla muestra qué miembros de una clase base se devuelven los Get métodos cuando se reflejan en un tipo.The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

Tipo de miembroMember Type EstáticoStatic No estáticoNon-Static
ConstructorConstructor NoNo NoNo
CampoField NoNo Sí.Yes. Un campo siempre es ocultar por nombre y firma.A field is always hide-by-name-and-signature.
eventoEvent No es aplicableNot applicable La regla del sistema de tipo común es que la herencia es el mismo que el de los métodos que implementa la propiedad.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Reflexión trata las propiedades como ocultar por nombre y firma.Reflection treats properties as hide-by-name-and-signature. Véase la nota 2.See note 2 below.
MétodoMethod NoNo Sí.Yes. Ocultar por nombre o de ocultar por nombre y firma, puede ser un método (virtual y no virtual).A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
Tipo anidadoNested Type NoNo NoNo
Propiedad.Property No es aplicableNot applicable La regla del sistema de tipo común es que la herencia es el mismo que el de los métodos que implementa la propiedad.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Reflexión trata las propiedades como ocultar por nombre y firma.Reflection treats properties as hide-by-name-and-signature. Véase la nota 2.See note 2 below.
  1. Ocultar por nombre y firma considera que todas las partes de la firma, incluidos los modificadores personalizados, devolución tipos, tipos de parámetros, centinelas y las convenciones de llamada no administradas.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. Se trata de una comparación binaria.This is a binary comparison.

  2. Para la reflexión, propiedades y eventos son ocultar por nombre y firma.For reflection, properties and events are hide-by-name-and-signature. Si tiene una propiedad con una operación get y un descriptor de acceso de la clase base, pero la clase derivada tiene solo un descriptor de acceso get, la propiedad de clase derivada oculta la propiedad de clase base y no podrá tener acceso el establecedor de la clase 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. Los atributos personalizados no forman parte de common type system.Custom attributes are not part of the common type system.

Las matrices o los tipos COM no se buscan, a menos que ya se han cargado en la tabla de clases disponibles.Arrays or COM types are not searched for unless they have already been loaded into the table of available classes.

typeName puede ser el nombre de tipo calificado por su espacio de nombres o un nombre completo de ensamblado que incluya una especificación de nombre de ensamblado.typeName can be the type name qualified by its namespace or an assembly-qualified name that includes an assembly name specification. Vea AssemblyQualifiedName.See AssemblyQualifiedName.

Si typeName incluye el espacio de nombres pero no el nombre del ensamblado, este método busca solo ensamblado del objeto que realiza la llamada y Mscorlib.dll, en ese orden.If typeName includes the namespace but not the assembly name, this method searches only the calling object's assembly and Mscorlib.dll, in that order. Si typeName es un nombre completo con el nombre de ensamblado parcial o completo, este método busca en el ensamblado especificado.If typeName is fully qualified with the partial or complete assembly name, this method searches in the specified assembly. Si el ensamblado tiene un nombre seguro, se requiere un nombre de ensamblado completo.If the assembly has a strong name, a complete assembly name is required.

El AssemblyQualifiedName propiedad devuelve un nombre de tipo completo incluido tipos anidados, el nombre del ensamblado y los 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 los compiladores compatibles con common language runtime emitirá el nombre sencillo de una clase anidada y la reflexión construirá un nombre con sufijo cuando se consulta, con arreglo a las siguientes convenciones.All compilers that support the common language runtime will emit the simple name of a nested class, and reflection constructs a mangled name when queried, in accordance with the following conventions.

Nota

En la versión 2.0 de .NET Framework, la arquitectura de procesador se agrega a la identidad del ensamblado y se puede especificar como parte de las cadenas de nombre de ensamblado.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 ejemplo, "ProcessorArchitecture = msil".For example, "ProcessorArchitecture=msil". Sin embargo, no se incluye en la cadena devuelta por la AssemblyQualifiedName propiedad, por motivos de compatibilidad.However, it is not included in the string returned by the AssemblyQualifiedName property, for compatibility reasons. También puede cargar tipos mediante la creación de un AssemblyName objeto y pasarlo a una sobrecarga adecuada de la Load método.You can also load types by creating an AssemblyName object and passing it to an appropriate overload of the Load method. A continuación, puede usar el Assembly.GetType método para cargar tipos desde el ensamblado.You can then use the Assembly.GetType method to load types from the assembly. Vea también AssemblyName.ProcessorArchitecture.See also AssemblyName.ProcessorArchitecture.

DelimitadorDelimiter SignificadoMeaning
Barra diagonal inversa (\)Backslash (\) Carácter de escape.Escape character.
Acento grave (')Backtick (`) Precede a uno o más dígitos que representa el número de parámetros de tipo, situado al final del nombre de un 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.
Corchetes ([])Brackets ([]) Incluya una lista de argumentos de tipo genérico, para un tipo genérico construido; dentro de una lista de argumentos de tipo, encierra un tipo calificado con el ensamblado.Enclose a generic type argument list, for a constructed generic type; within a type argument list, enclose an assembly-qualified type.
Coma (,)Comma (,) Precede al nombre de ensamblado.Precedes the Assembly name.
Punto (.)Period (.) Denota los identificadores de espacio de nombres.Denotes namespace identifiers.
Signo más (+)Plus sign (+) Precede a una clase anidada.Precedes a nested class.

Por ejemplo, el nombre completo para una clase podría ser similar al siguiente:For example, the fully qualified name for a class might look like this:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly  

Si el espacio de nombres fuera EspacioNombresPrincipal. Sub+EspacioNombres, la cadena tendría que ir delante del signo más (+) con un carácter de escape (\) para evitar que se va a interpretar como un separador de anidamiento.If the namespace were TopNamespace.Sub+Namespace, then the string would have to precede the plus sign (+) with an escape character (\) to prevent it from being interpreted as a nesting separator. La reflexión emite esta cadena como sigue:Reflection emits this string as follows:

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

Un "++" se convierte en "\+\+" y un "\"se convierte en"\\".A "++" becomes "\+\+", and a "\" becomes "\\".

Este nombre completo puede conservarse y usa más adelante para cargar el Type.This qualified name can be persisted and later used to load the Type. Para buscar y cargar un Type, utilice GetType con el tipo de nombre solo o con el nombre de tipo calificado de ensamblado.To search for and load a Type, use GetType either with the type name only or with the assembly qualified type name. GetType con el tipo de nombre sólo buscará los Type en el ensamblado del llamador y, a continuación, en el ensamblado del sistema.GetType with the type name only will look for the Type in the caller's assembly and then in the System assembly. GetType con el ensamblado de nombre de tipo calificado buscará el Type en cualquier ensamblado.GetType with the assembly qualified type name will look for the Type in any assembly.

Los nombres de tipo pueden contener caracteres finales que denoten información adicional sobre el tipo, por ejemplo, si el tipo es un tipo de referencia, un tipo de puntero o un tipo de 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 el nombre del tipo sin estos caracteres finales, use t.GetElementType().ToString(), donde t es el tipo.To retrieve the type name without these trailing characters, use t.GetElementType().ToString(), where t is the type.

Espacios son relevantes en todos los componentes de nombre de tipo, excepto el nombre del ensamblado.Spaces are relevant in all type name components except the assembly name. En el nombre del ensamblado, espacios antes del separador ',' son relevantes, pero se omiten los espacios detrás del separador ','.In the assembly name, spaces before the ',' separator are relevant, but spaces after the ',' separator are ignored.

El nombre de un tipo genérico finaliza con un acento grave (`) seguido de dígitos que representa el 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. El propósito de este nombre con sufijo es permitir que los compiladores admitir tipos genéricos con el mismo nombre pero con distintos números de parámetros de tipo, que se producen en el mismo ámbito.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 ejemplo, la reflexión devuelve los nombres alterados Tuple1andtupla2 desde los métodos genéricos Tuple(Of T) y Tuple(Of T0, T1) en Visual Basic, o Tuple<T> y tupla\<T0, T1> en 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 los tipos genéricos, la lista de argumentos de tipo se encierra entre corchetes y los argumentos de tipo están separados por comas.For generic types, the type argument list is enclosed in brackets, and the type arguments are separated by commas. Por ejemplo, un tipo genérico Dictionary<TKey,TValue> tiene dos parámetros de tipo.For example, a generic Dictionary<TKey,TValue> has two type parameters. Un Dictionary<TKey,TValue> de MyType con claves de tipo String puede representarse como sigue: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 un tipo calificado con el ensamblado en una lista de argumentos de tipo, incluya el tipo de ensamblado completo entre corchetes.To specify an assembly-qualified type within a type argument list, enclose the assembly-qualified type within brackets. En caso contrario, las comas que separan las partes del nombre completo de ensamblado se interpretan como delimitar los argumentos de tipo adicionales.Otherwise, the commas that separate the parts of the assembly-qualified name are interpreted as delimiting additional type arguments. Por ejemplo, un Dictionary<TKey,TValue> de MyType fromMyAssembly.dll, con claves de tipo String, puede especificar como sigue:For example, a Dictionary<TKey,TValue> of MyType fromMyAssembly.dll, with keys of type String, might be specified as follows:

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

Nota

Un tipo calificado con el ensamblado puede escribirse entre corchetes solo cuando aparece dentro de una lista de parámetros de tipo.An assembly-qualified type can be enclosed in brackets only when it appears within a type parameter list. Las reglas para buscar los ensamblados de tipos completos e incompletos en listas de parámetros de tipo son las mismas que las reglas para tipos no genéricos completos e incompletos.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.

Tipos que aceptan valores NULL son un caso especial de tipos genéricos.Nullable types are a special case of generic types. Por ejemplo, una que acepta valores NULL Int32 representado por la cadena "System.Nullable'1[System.Int32]".For example, a nullable Int32 is represented by the string "System.Nullable`1[System.Int32]".

Nota

En C#, C++ y Visual Basic también puede obtener los tipos que aceptan valores NULL mediante operadores de tipo.In C#, C++, and Visual Basic you can also get nullable types using type operators. Por ejemplo, el que acepta valores NULL Boolean tipo devuelto por typeof(Nullable<bool>) en C#, por Nullable<Boolean>::typeid en C++ y por GetType(Nullable(Of Boolean)) en 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.

En la tabla siguiente se muestra la sintaxis que usa con GetType para varios tipos.The following table shows the syntax you use with GetType for various types.

Para obtenerTo Get UsarUse
Acepta valores null Int32A nullable Int32 Type.GetType("System.Nullable`1[System.Int32]")
Un puntero no administrado para MyTypeAn unmanaged pointer to MyType Type.GetType("MyType*")
Un puntero no administrado a un puntero a MyTypeAn unmanaged pointer to a pointer to MyType Type.GetType("MyType**")
Un puntero administrado o una referencia a MyTypeA managed pointer or reference to MyType Type.GetType("MyType&").Type.GetType("MyType&"). Tenga en cuenta que, a diferencia de los punteros, las referencias están limitadas a un nivel.Note that unlike pointers, references are limited to one level.
Una clase primaria y una clase anidadaA parent class and a nested class Type.GetType("MyParentClass+MyNestedClass")
Una matriz unidimensional con un límite inferior de 0A one-dimensional array with a lower bound of 0 Type.GetType("MyType[]")
Una matriz unidimensional con un límite inferior desconocidoA one-dimensional array with an unknown lower bound Type.GetType("MyType[*]")
Una matriz de n dimensionesAn n-dimensional array Una coma (,) dentro de los corchetes un total de n-1 veces.A comma (,) inside the brackets a total of n-1 times. Por ejemplo, System.Object[,,] representa tridimensional Object matriz.For example, System.Object[,,] represents a three-dimensional Object array.
Una matriz de matrices unidimensionalesAn array of one-dimensional arrays Type.GetType("MyType[][]")
Una matriz bidimensional rectangular con límites inferiores desconocidosA rectangular two-dimensional array with unknown lower bounds Type.GetType("MyType[,]")
Un tipo genérico con un argumento de tipoA generic type with one type argument Type.GetType("MyGenericType`1[MyType]")
Un tipo genérico con dos argumentos de tipoA generic type with two type arguments Type.GetType("MyGenericType`2[MyType,AnotherType]")
Un tipo genérico con dos argumentos de tipo calificado con el ensambladoA generic type with two assembly-qualified type arguments Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
Un tipo genérico con un argumento de tipo calificado de ensamblado completo de ensambladoAn assembly-qualified generic type with an assembly-qualified type argument '' Type.GetType ("MyGenericType1[[MyType,MyAssembly]],MyGenericTypeAssembly")``Type.GetType("MyGenericType1[[MyType,MyAssembly]],MyGenericTypeAssembly")
Un tipo genérico cuyo argumento de tipo es un tipo genérico con dos argumentos de tipoA generic type whose type argument is a generic type with two type arguments '' Type.GetType ("MyGenericType1[AnotherGenericType2[MyType,AnotherType]]")'``Type.GetType("MyGenericType1[AnotherGenericType2[MyType,AnotherType]]")`
Consulte también:

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

Obtiene el Type con el nombre indicado, que especifica si se genera una excepción en caso de que no se encuentre el tipo y si se va a realizar una búsqueda donde se distingue entre mayúsculas y 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

Nombre calificado con el ensamblado del tipo que se va a obtener.The assembly-qualified name of the type to get. Vea AssemblyQualifiedName.See AssemblyQualifiedName. Si el tipo está en el ensamblado que se ejecuta actualmente o en Mscorlib.dll, es suficiente para proporcionar el nombre completo del tipo por su espacio de nombres.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

Es true para producir una excepción si no se puede encontrar el tipo; es false para devolver null.true to throw an exception if the type cannot be found; false to return null. Si se especifica false se suprimen otras condiciones de excepción, pero no todas.Specifying false also suppresses some other exception conditions, but not all of them. Vea la sección Excepciones.See the Exceptions section.

ignoreCase
Boolean Boolean Boolean Boolean

true para realizar una búsqueda de typeName que no distinga entre mayúsculas y minúsculas; false para realizar una búsqueda de typeName que distinga entre mayúsculas y minúsculas.true to perform a case-insensitive search for typeName, false to perform a case-sensitive search for typeName.

Devoluciones

Tipo con el nombre especificado.The type with the specified name. Si el tipo no se encuentra, el parámetro throwOnError especifica si se devuelve null o se produce una excepción.If the type is not found, the throwOnError parameter specifies whether null is returned or an exception is thrown. En algunos casos, se produce una excepción con independencia del valor de throwOnError.In some cases, an exception is thrown regardless of the value of throwOnError. Vea la sección Excepciones.See the Exceptions section.

Excepciones

Se invoca un inicializador de clase y genera una excepción.A class initializer is invoked and throws an exception.

throwOnError es true y no se encuentra el tipo.throwOnError is true and the type is not found.

O bien-or- throwOnError es true y typeName contiene caracteres no válidos, como una pestaña insertada.throwOnError is true and typeName contains invalid characters, such as an embedded tab. O bien-or- throwOnError es true y typeName es una cadena vacía.throwOnError is true and typeName is an empty string.

O bien-or- throwOnError es true y typeName representa un tipo de matriz con un tamaño no válido.throwOnError is true and typeName represents an array type with an invalid size.

O bien-or- typeName representa una matriz de TypedReference.typeName represents an array of TypedReference.

throwOnError es true y typeName contiene sintaxis no válida.throwOnError is true and typeName contains invalid syntax. Por ejemplo: "MyType[,*,]".For example, "MyType[,*,]".

O bien-or- typeName representa un tipo genérico que tiene un tipo de puntero, un tipo ByRef o Void como uno de sus argumentos de tipo.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

O bien-or- typeName representa un tipo genérico que tiene un número incorrecto de argumentos de tipo.typeName represents a generic type that has an incorrect number of type arguments.

O bien-or- typeName representa un tipo genérico y uno de sus argumentos de tipo no satisface las restricciones del parámetro de tipo correspondiente.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

throwOnError es true y no se encontró el ensamblado o alguna de sus dependencias.throwOnError is true and the assembly or one of its dependencies was not found.

Se encontró el ensamblado o una de sus dependencias, pero no se pudo cargar.The assembly or one of its dependencies was found, but could not be loaded.

El ensamblado o alguna de sus dependencias no son válidos.The assembly or one of its dependencies is not valid.

O bien-or- Actualmente, está cargada la versión 2.0 u otra posterior de Common Language Runtime pero el ensamblado se compiló con una versión posterior.Version 2.0 or later of the common language runtime is currently loaded, and the assembly was compiled with a later version.

Comentarios

Puede usar el GetType método para obtener un Type si sabe su nombre completo de ensamblado que puede obtenerse a partir de objetos para un tipo en otro ensamblado, AssemblyQualifiedName.You can use the GetType method to obtain a Type object for a type in another assembly, if you know its assembly-qualified name which can be obtained from AssemblyQualifiedName. GetType hace que la carga del ensamblado especificado en typeName.GetType causes loading of the assembly specified in typeName. También puede cargar un ensamblado mediante la Load método y, a continuación, utilice el GetType o GetTypes métodos de la Assembly clase para obtener Type objetos.You can also load an assembly using the Load method, and then use the GetType or GetTypes methods of the Assembly class to get Type objects. Si un tipo está en un ensamblado que se sabe que el programa en tiempo de compilación, es más eficaz utilizar typeof en C#, GetType en Visual Basic, o typeid en C++.If a type is in an assembly known to your program at compile time, it is more efficient to use typeof in C#, GetType in Visual Basic, or typeid in C++.

GetType solo funciona en los ensamblados cargados desde el disco.GetType only works on assemblies loaded from disk. Si se llama a GetType para buscar un tipo definido en un ensamblado dinámico definido mediante el System.Reflection.Emit servicios, podría obtener un comportamiento incoherente.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. El comportamiento depende de si el ensamblado dinámico es persistente, es decir, se crea mediante la RunAndSave o Save modos de acceso a la System.Reflection.Emit.AssemblyBuilderAccess enumeración.The behavior depends on whether the dynamic assembly is persistent, that is, created using the RunAndSave or Save access modes of the System.Reflection.Emit.AssemblyBuilderAccess enumeration. Si el ensamblado dinámico es persistente y se ha escrito en el disco antes de GetType es llamado, el cargador busca el ensamblado guardado en disco, carga ese ensamblado y recupera el tipo del ensamblado.If the dynamic assembly is persistent and has been written to disk before GetType is called, the loader finds the saved assembly on disk, loads that assembly, and retrieves the type from that assembly. Si el ensamblado no se ha guardado en el disco cuando GetType se llama, el método devuelve null.If the assembly has not been saved to disk when GetType is called, the method returns null. GetType no entiende los ensamblados dinámicos transitorios; por lo tanto, una llamada a GetType para recuperar un tipo en transitorio devuelve el ensamblado dinámico 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 en un módulo dinámico, suscribirse a la AppDomain.AssemblyResolve eventos y llamadas GetType antes de guardar.To use GetType on a dynamic module, subscribe to the AppDomain.AssemblyResolve event and call GetType before saving. De lo contrario, obtendrá dos copias del ensamblado en la memoria.Otherwise, you will get two copies of the assembly in memory.

El throwOnError parámetro especifica lo que sucede cuando no se encuentra el tipo y también suprime algunas condiciones de excepción, como se describe en la sección excepciones.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. Algunas excepciones se producen independientemente del valor de throwOnError.Some exceptions are thrown regardless of the value of throwOnError. Por ejemplo, si se encuentra el tipo, pero no se puede cargar, un TypeLoadException se produce incluso si throwOnError es false.For example, if the type is found but cannot be loaded, a TypeLoadException is thrown even if throwOnError is false.

La siguiente tabla muestra qué miembros de una clase base se devuelven los Get métodos cuando se reflejan en un tipo.The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

Tipo de miembroMember Type EstáticoStatic No estáticoNon-Static
ConstructorConstructor NoNo NoNo
CampoField NoNo Sí.Yes. Un campo siempre es ocultar por nombre y firma.A field is always hide-by-name-and-signature.
eventoEvent No es aplicableNot applicable La regla del sistema de tipo común es que la herencia es el mismo que el de los métodos que implementa la propiedad.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Reflexión trata las propiedades como ocultar por nombre y firma.Reflection treats properties as hide-by-name-and-signature. Véase la nota 2.See note 2 below.
MétodoMethod NoNo Sí.Yes. Ocultar por nombre o de ocultar por nombre y firma, puede ser un método (virtual y no virtual).A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
Tipo anidadoNested Type NoNo NoNo
Propiedad.Property No es aplicableNot applicable La regla del sistema de tipo común es que la herencia es el mismo que el de los métodos que implementa la propiedad.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Reflexión trata las propiedades como ocultar por nombre y firma.Reflection treats properties as hide-by-name-and-signature. Véase la nota 2.See note 2 below.
  1. Ocultar por nombre y firma considera que todas las partes de la firma, incluidos los modificadores personalizados, devolución tipos, tipos de parámetros, centinelas y las convenciones de llamada no administradas.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. Se trata de una comparación binaria.This is a binary comparison.

  2. Para la reflexión, propiedades y eventos son ocultar por nombre y firma.For reflection, properties and events are hide-by-name-and-signature. Si tiene una propiedad con una operación get y un descriptor de acceso de la clase base, pero la clase derivada tiene solo un descriptor de acceso get, la propiedad de clase derivada oculta la propiedad de clase base y no podrá tener acceso el establecedor de la clase 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. Los atributos personalizados no forman parte de common type system.Custom attributes are not part of the common type system.

Las matrices o los tipos COM no se buscan, a menos que ya se han cargado en la tabla de clases disponibles.Arrays or COM types are not searched for unless they have already been loaded into the table of available classes.

typeName puede ser el nombre de tipo calificado por su espacio de nombres o un nombre completo de ensamblado que incluya una especificación de nombre de ensamblado.typeName can be the type name qualified by its namespace or an assembly-qualified name that includes an assembly name specification. Vea AssemblyQualifiedName.See AssemblyQualifiedName.

Si typeName incluye el espacio de nombres pero no el nombre del ensamblado, este método busca solo ensamblado del objeto que realiza la llamada y Mscorlib.dll, en ese orden.If typeName includes the namespace but not the assembly name, this method searches only the calling object's assembly and Mscorlib.dll, in that order. Si typeName es un nombre completo con el nombre de ensamblado parcial o completo, este método busca en el ensamblado especificado.If typeName is fully qualified with the partial or complete assembly name, this method searches in the specified assembly. Si el ensamblado tiene un nombre seguro, se requiere un nombre de ensamblado completo.If the assembly has a strong name, a complete assembly name is required.

El AssemblyQualifiedName propiedad devuelve un nombre de tipo completo incluido tipos anidados, el nombre del ensamblado y los argumentos de tipo.The AssemblyQualifiedName property returns a fully qualified type name including nested types, the assembly name, and type arguments. Todos los compiladores compatibles con common language runtime emitirá el nombre sencillo de una clase anidada y la reflexión construirá un nombre con sufijo cuando se consulta, con arreglo a las siguientes convenciones.All compilers that support the common language runtime will emit the simple name of a nested class, and reflection constructs a mangled name when queried, in accordance with the following conventions.

Nota

En la versión 2.0 de .NET Framework, la arquitectura de procesador se agrega a la identidad del ensamblado y se puede especificar como parte de las cadenas de nombre de ensamblado.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 ejemplo, "ProcessorArchitecture = msil".For example, "ProcessorArchitecture=msil". Sin embargo, no se incluye en la cadena devuelta por la AssemblyQualifiedName propiedad, por motivos de compatibilidad.However, it is not included in the string returned by the AssemblyQualifiedName property, for compatibility reasons. También puede cargar tipos mediante la creación de un AssemblyName objeto y pasarlo a una sobrecarga adecuada de la Load método.You can also load types by creating an AssemblyName object and passing it to an appropriate overload of the Load method. A continuación, puede usar el Assembly.GetType método para cargar tipos desde el ensamblado.You can then use the Assembly.GetType method to load types from the assembly. Vea también AssemblyName.ProcessorArchitecture.See also AssemblyName.ProcessorArchitecture.

DelimitadorDelimiter SignificadoMeaning
Barra diagonal inversa (\)Backslash (\) Carácter de escape.Escape character.
Acento grave (')Backtick (`) Precede a uno o más dígitos que representa el número de parámetros de tipo, situado al final del nombre de un 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.
Corchetes ([])Brackets ([]) Incluya una lista de argumentos de tipo genérico, para un tipo genérico construido; dentro de una lista de argumentos de tipo, encierra un tipo calificado con el ensamblado.Enclose a generic type argument list, for a constructed generic type; within a type argument list, enclose an assembly-qualified type.
Coma (,)Comma (,) Precede al nombre de ensamblado.Precedes the Assembly name.
Punto (.)Period (.) Denota los identificadores de espacio de nombres.Denotes namespace identifiers.
Signo más (+)Plus sign (+) Precede a una clase anidada.Precedes a nested class.

Por ejemplo, el nombre completo para una clase podría ser similar al siguiente:For example, the fully qualified name for a class might look like this:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly  

Si el espacio de nombres fuera EspacioNombresPrincipal. Sub+EspacioNombres, la cadena tendría que ir delante del signo más (+) con un carácter de escape (\) para evitar que se va a interpretar como un separador de anidamiento.If the namespace were TopNamespace.Sub+Namespace, then the string would have to precede the plus sign (+) with an escape character (\) to prevent it from being interpreted as a nesting separator. La reflexión emite esta cadena como sigue:Reflection emits this string as follows:

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

Un "++" se convierte en "\+\+" y un "\"se convierte en"\\".A "++" becomes "\+\+", and a "\" becomes "\\".

Este nombre completo puede conservarse y usa más adelante para cargar el Type.This qualified name can be persisted and later used to load the Type. Para buscar y cargar un Type, utilice GetType con el tipo de nombre solo o con el nombre de tipo calificado de ensamblado.To search for and load a Type, use GetType either with the type name only or with the assembly qualified type name. GetType con el tipo de nombre sólo buscará los Type en el ensamblado del llamador y, a continuación, en el ensamblado del sistema.GetType with the type name only will look for the Type in the caller's assembly and then in the System assembly. GetType con el ensamblado de nombre de tipo calificado buscará el Type en cualquier ensamblado.GetType with the assembly qualified type name will look for the Type in any assembly.

Los nombres de tipo pueden contener caracteres finales que denoten información adicional sobre el tipo, por ejemplo, si el tipo es un tipo de referencia, un tipo de puntero o un tipo de 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 el nombre del tipo sin estos caracteres finales, use t.GetElementType().ToString(), donde t es el tipo.To retrieve the type name without these trailing characters, use t.GetElementType().ToString(), where t is the type.

Espacios son relevantes en todos los componentes de nombre de tipo, excepto el nombre del ensamblado.Spaces are relevant in all type name components except the assembly name. En el nombre del ensamblado, espacios antes del separador ',' son relevantes, pero se omiten los espacios detrás del separador ','.In the assembly name, spaces before the ',' separator are relevant, but spaces after the ',' separator are ignored.

El nombre de un tipo genérico finaliza con un acento grave (`) seguido de dígitos que representa el 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. El propósito de este nombre con sufijo es permitir que los compiladores admitir tipos genéricos con el mismo nombre pero con distintos números de parámetros de tipo, que se producen en el mismo ámbito.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 ejemplo, la reflexión devuelve los nombres alterados Tuple1andtupla2 desde los métodos genéricos Tuple(Of T) y Tuple(Of T0, T1) en Visual Basic, o Tuple<T> y tupla\<T0, T1> en 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 los tipos genéricos, la lista de argumentos de tipo se encierra entre corchetes y los argumentos de tipo están separados por comas.For generic types, the type argument list is enclosed in brackets, and the type arguments are separated by commas. Por ejemplo, un tipo genérico Dictionary<TKey,TValue> tiene dos parámetros de tipo.For example, a generic Dictionary<TKey,TValue> has two type parameters. Un Dictionary<TKey,TValue> de MyType con claves de tipo String puede representarse como sigue: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 un tipo calificado con el ensamblado en una lista de argumentos de tipo, incluya el tipo de ensamblado completo entre corchetes.To specify an assembly-qualified type within a type argument list, enclose the assembly-qualified type within brackets. En caso contrario, las comas que separan las partes del nombre completo de ensamblado se interpretan como delimitar los argumentos de tipo adicionales.Otherwise, the commas that separate the parts of the assembly-qualified name are interpreted as delimiting additional type arguments. Por ejemplo, un Dictionary<TKey,TValue> de MyType en MyAssembly.dll, con claves de tipo String, puede especificar como sigue:For example, a Dictionary<TKey,TValue> of MyType from MyAssembly.dll, with keys of type String, might be specified as follows:

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

Nota

Un tipo calificado con el ensamblado puede escribirse entre corchetes solo cuando aparece dentro de una lista de parámetros de tipo.An assembly-qualified type can be enclosed in brackets only when it appears within a type parameter list. Las reglas para buscar los ensamblados de tipos completos e incompletos en listas de parámetros de tipo son las mismas que las reglas para tipos no genéricos completos e incompletos.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.

Tipos que aceptan valores NULL son un caso especial de tipos genéricos.Nullable types are a special case of generic types. Por ejemplo, una que acepta valores NULL Int32 representado por la cadena "System.Nullable'1[System.Int32]".For example, a nullable Int32 is represented by the string "System.Nullable`1[System.Int32]".

Nota

En C#, C++ y Visual Basic también puede obtener los tipos que aceptan valores NULL mediante operadores de tipo.In C#, C++, and Visual Basic you can also get nullable types using type operators. Por ejemplo, el que acepta valores NULL Boolean tipo devuelto por typeof(Nullable<bool>) en C#, por Nullable<Boolean>::typeid en C++ y por GetType(Nullable(Of Boolean)) en 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.

En la tabla siguiente se muestra la sintaxis que usa con GetType para varios tipos.The following table shows the syntax you use with GetType for various types.

Para obtenerTo Get UsarUse
Acepta valores null Int32A nullable Int32 Type.GetType("System.Nullable`1[System.Int32]")
Un puntero no administrado para MyTypeAn unmanaged pointer to MyType Type.GetType("MyType*")
Un puntero no administrado a un puntero a MyTypeAn unmanaged pointer to a pointer to MyType Type.GetType("MyType**")
Un puntero administrado o una referencia a MyTypeA managed pointer or reference to MyType Type.GetType("MyType&").Type.GetType("MyType&"). Tenga en cuenta que, a diferencia de los punteros, las referencias están limitadas a un nivel.Note that unlike pointers, references are limited to one level.
Una clase primaria y una clase anidadaA parent class and a nested class Type.GetType("MyParentClass+MyNestedClass")
Una matriz unidimensional con un límite inferior de 0A one-dimensional array with a lower bound of 0 Type.GetType("MyArray[]")
Una matriz unidimensional con un límite inferior desconocidoA one-dimensional array with an unknown lower bound Type.GetType("MyArray[*]")
Una matriz de n dimensionesAn n-dimensional array Una coma (,) dentro de los corchetes un total de n-1 veces.A comma (,) inside the brackets a total of n-1 times. Por ejemplo, System.Object[,,] representa tridimensional Object matriz.For example, System.Object[,,] represents a three-dimensional Object array.
La matriz de una matriz bidimensionalA two-dimensional array's array Type.GetType("MyArray[][]")
Una matriz bidimensional rectangular con límites inferiores desconocidosA rectangular two-dimensional array with unknown lower bounds Type.GetType("MyArray[,]")
Un tipo genérico con un argumento de tipoA generic type with one type argument Type.GetType("MyGenericType`1[MyType]")
Un tipo genérico con dos argumentos de tipoA generic type with two type arguments Type.GetType("MyGenericType`2[MyType,AnotherType]")
Un tipo genérico con dos argumentos de tipo calificado con el ensambladoA generic type with two assembly-qualified type arguments Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
Un tipo genérico con un argumento de tipo calificado de ensamblado completo de ensambladoAn assembly-qualified generic type with an assembly-qualified type argument Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
Un tipo genérico cuyo argumento de tipo es un tipo genérico con dos argumentos de tipoA generic type whose type argument is a generic type with two type arguments Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")
Consulte también:

Se aplica a