2009-07-21 12 views
9

Czy to możliwe, aby uzyskać Type poprzez Type.GetType() gdy nazwa zespół wykwalifikowanych przeszedł do GetType() określa inny Version niż wersja biblioteki DLL, która jest faktycznie załadowane? Jeśli tak, jakie jest zachowanie GetType()?Ignorując wersji w nazwie zespołu wykwalifikowanych przekazany do Type.GetType()

Chcę uzyskać Type z zespołu, niezależnie od wersji zespołu. Mam funkcji, która pobiera nazwę zespołu kwalifikowana jako argument:

Type someType = Type.GetType(someName); 

Wartość someName odpowiada Type chcę dostać, ale to nie może być taka sama Version określony jako co jest ładowany w mojej aplikacji .

+0

To pytanie nie jest wystarczająco precyzyjna ... co masz na myśli, chcąc uzyskać typ z zespołu, ale nie wiedząc, jaki typ chcesz uzyskać z jakiego montażu? To nie brzmi zbyt logicznie. Cały cel "nazw o kwalifikacjach złożenia" polega na zdefiniowaniu wersji i tokena z nazwą. Edytuj pytanie, aby wyjaśnić. – galaktor

Odpowiedz

1

Podczas testów stwierdziłem, że GetType() zwróci prawidłowy typ, nawet jeśli aktualnie załadowana wersja zespołu nie jest zgodna z wartością pola Version z kwalifikowaną nazwą zestawu.

+1

To nie działa, jeśli Twoja aplikacja ma silną nazwę. – jnm2

+0

Nie mam aplikacji o zdecydowanie nazwie, a to zdecydowanie nie jest tak. – BrainSlugs83

0

Powinieneś zastanowić się nad złożeniami z bieżącej domeny, aby to zrobić.

sprawdzić moją odpowiedź na this thread

2

Użyłem tego powodzeniem:

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

To jest poprawna odpowiedź. - To uratowało mój bekon. Dzięki! :) – BrainSlugs83

Powiązane problemy