2009-07-21 15 views
9

¿Es posible obtener una Type través Type.GetType() cuando el nombre de ensamblado cualificado pasado a GetType() especifica un diferente Version que la versión de la DLL que se carga realmente? Si es así, ¿cuál es el comportamiento de GetType()?en un nombre de ensamblado cualificado pasado a Type.GetType()

Deseo obtener un Type de un ensamblaje, independientemente de la versión que tenga el ensamblaje. Tengo una función que recibe un nombre de ensamblado calificado como un argumento:

Type someType = Type.GetType(someName); 

El valor someName corresponde a la Type quiero llegar, pero puede no tener el mismo Version especifica como que está cargado en mi solicitud .

+0

Esta pregunta no es lo suficientemente precisa ... ¿qué es lo que entendemos por querer obtener un tipo de una asamblea, pero sin saber qué tipo desea obtener de qué ensamblaje? Eso no suena muy lógico. Y todo el propósito de "nombres calificados para ensamblaje" es definir verion y token con el nombre. Por favor, edite la pregunta para aclarar. – galaktor

Respuesta

1

En la prueba encontré que GetType() devolverá el tipo correcto incluso si la versión del ensamblaje cargado actualmente no coincide con el valor en el campo Version del nombre calificado para ensamblaje.

+1

Esto no funciona si su aplicación tiene un nombre fuerte. – jnm2

+0

No tengo una aplicación con un nombre fuerte, y definitivamente este no es el caso. – BrainSlugs83

0

Debe reflejar ensamblados del dominio actual para poder hacerlo.

comprobar mi respuesta en this thread

2

He utilizado este éxito:

Type type = Type.GetType(typeName, AssemblyResolver, null); 

private static System.Reflection.Assembly AssemblyResolver(System.Reflection.AssemblyName assemblyName) 
{ 
    assemblyName.Version = null; 
    return System.Reflection.Assembly.Load(assemblyName); 
} 
+0

Esta es la respuesta correcta. - Esto me salvó el tocino. ¡Gracias! :) – BrainSlugs83

Cuestiones relacionadas