2009-07-21 4 views
9

Ist es möglich, eine Type über Type.GetType() zu erhalten, wenn die Assembly qualifizierten Namen in GetType() bestanden, eine andere Version als die Version der DLL angibt, die tatsächlich geladen wird? Wenn ja, wie ist das Verhalten von GetType()?Ignorieren Version in einer Assembly qualifizierten Namen zu Type.GetType() übergeben

Ich möchte eine Type von einer Baugruppe unabhängig davon erhalten, welche Version die Baugruppe ist. Ich habe eine Funktion, die eine Assembly qualifizierte Namen als Argument bekommt:

Type someType = Type.GetType(someName); 

Der someName Wert entspricht die Type ich zu bekommen, aber es kann nicht die gleichen Version angegeben als das, was in meiner Anwendung geladen wird .

+0

Diese Frage ist nicht präzise genug ..., was Sie meinen tun zu wollen, indem Sie einen Typ aus einer Baugruppe zu erhalten, aber Sie wissen nicht, welchen Typ Sie von welcher Baugruppe erhalten möchten? Das klingt nicht sehr logisch. Und der ganze Zweck von "Assembly-qualifizierte Namen" ist, Verion und Token mit dem Namen zu definieren. Bitte bearbeiten Sie die Frage zur Klärung. – galaktor

Antwort

1

In Tests wurde festgestellt, dass GetType() den richtigen Typ zurückgibt, selbst wenn die Version der aktuell geladenen Assembly nicht mit dem Wert im Feld Version des Assembly-qualifizierten Namens übereinstimmt.

+1

Dies funktioniert nicht, wenn Ihre App stark benannt ist. – jnm2

+0

Ich habe keine stark benannte Anwendung, und das ist definitiv nicht der Fall. – BrainSlugs83

0

Sie sollten über Baugruppen aus der aktuellen Domäne nachdenken, um es zu tun.

überprüfen Sie meine Antwort auf this thread

2

ich diese erfolgreich verwendet haben:

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

Dies ist die richtige Antwort. - Das hat meinen Speck gerettet. Vielen Dank! :) – BrainSlugs83