2009-07-21 9 views
9

E 'possibile ottenere un Type tramite Type.GetType() quando il nome di assemblaggio qualificato passato in GetType() specifica una diversa Version rispetto alla versione della DLL che viene effettivamente caricata? In tal caso, qual è il comportamento di GetType()?Ignorando la versione in un nome di catena di montaggio qualificato passato a Type.GetType()

Desidero ottenere un Type da un assembly indipendentemente dalla versione dell'assieme. Ho una funzione che prende un nome di catena di montaggio qualificato come argomento:

Type someType = Type.GetType(someName); 

Il valore someName corrisponde al Type che voglio ottenere, ma non può avere la stessa Version specificato come quello caricato nella mia applicazione .

+0

Questa domanda non è abbastanza preciso ... che cosa si intende per che vogliono ottenere un tipo da un assieme, ma non sapendo quale tipo vuoi ottenere da quale assemblaggio? Non suona molto logico. E l'intero scopo dei "nomi qualificati per il montaggio" è definire verion e token con il nome. Si prega di modificare la domanda per chiarire. – galaktor

risposta

1

Nel test ho rilevato che GetType() restituirà il tipo corretto anche se la versione dell'assieme correntemente caricato non corrisponde al valore nel campo Version del nome qualificato dell'assieme.

+1

Questo non funziona se la tua app ha un nome sicuro. – jnm2

+0

Non ho un'applicazione con un nome sicuro, e questo non è assolutamente il caso. – BrainSlugs83

0

Si consiglia di riflettere sugli assiemi del dominio corrente per poterlo fare.

controllare la mia risposta su this thread

2

Ho usato questo successo:

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

Questa è la risposta corretta. - Questo mi ha salvato la pancetta. Grazie! :) – BrainSlugs83

Problemi correlati