2009-07-21 3 views
9

Est-il possible d'obtenir un Type via Type.GetType() lorsque le nom qualifié d'assembly passé dans GetType() spécifie un Version différent de la version de la DLL qui est effectivement chargé? Si oui, quel est le comportement de GetType()?Ignorer la version en un nom qualifié d'assembly passé à Type.GetType()

Je souhaite obtenir un Type à partir d'un assembly quelle que soit la version de l'assembly. J'ai une fonction qui obtient un nom qualifié d'assembly comme argument:

Type someType = Type.GetType(someName); 

La valeur someName correspond à la Type que je veux, mais il ne peut pas avoir le même Version spécifié que ce qui est chargé dans mon application .

+0

Cette question ne suffit pas précise ... que voulez-vous dire en voulant obtenir un type d'un ensemble, mais ne sachant pas quel type vous voulez obtenir de quel assemblage? Cela ne semble pas très logique. Et le but des "noms qualifiés pour l'assemblage" est de définir verion et jeton avec le nom. Veuillez modifier la question pour clarifier. – galaktor

Répondre

1

Lors du test, j'ai trouvé que GetType() retournera le type correct même si la version de l'assemblage actuellement chargé ne correspond pas à la valeur dans le champ Version du nom qualifié de l'assembly.

+1

Cela ne fonctionne pas si votre application est fortement nommée. – jnm2

+0

Je n'ai pas une application fortement nommée, et ce n'est certainement pas le cas. – BrainSlugs83

0

Vous devriez réfléchir sur les assemblages du domaine actuel pour le faire.

vérifier ma réponse sur this thread

2

Je l'ai utilisé avec succès cette:

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

Ceci est la bonne réponse. - Cela a sauvé mon bacon. Merci! :) – BrainSlugs83

Questions connexes