2009-07-21 75 views
9

是否有可能一個Type通過Type.GetType()獲得通過成爲GetType()組裝限定名稱指定了不同的Version比DLL的版本,實際上裝?如果是這樣,GetType()的行爲是什麼?傳遞給Type.GetType程序集限定名稱忽略版本()

我想從程序集中得到一個Type,無論程序集是什麼版本。我有一個函數,獲取程序集限定名作爲參數:

Type someType = Type.GetType(someName); 

someName值對應於Type我想要得到的,但同樣Version指定什麼是我的應用程序加載它可能沒有。

+0

這個問題是不夠嚴謹......你的希望得到從裝配型的意思,但不知道你想從哪個組裝中獲得哪種類型?這聽起來不合邏輯。 「彙編合格名稱」的全部用途是用名稱定義verion和token。 請編輯該問題以澄清。 – galaktor 2009-07-21 14:05:10

回答

1

在測試中,我發現GetType()將返回正確的類型,即使當前加載的程序集的版本與程序集限定名稱的Version字段中的值不匹配。

+1

如果您的應用程序是強命名的,這不起作用。 – jnm2 2015-12-02 19:22:12

+0

我沒有強命名的應用程序,而且這絕對不是這種情況。 – BrainSlugs83 2017-11-29 23:51:49

2

我這成功地用於響應:

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); 
} 
相關問題