我有一個應用程序在分離的dll(由其他人開發)中使用特定類型。 說它是InnerType:在動態加載程序集上更改名稱空間
namespace SeparatedAssembly
{
public class InnerType
{
}
}
到現在爲止,我在Visual Studio中引用一個版本的這個dll的,我用的是InnerType在我的應用程序。但是,由於InnerType中的代碼可能會更改,因此程序集將在運行時通過「AssemblyResolve」事件加載。
但現在,這個類的命名空間發生了變化:
namespace SeparatedAssembly.Inner
{
public class InnerType
{
}
}
所以,我有一個異常TypeLoadException,因爲我的應用程序再也找不到這種類型。我不能只引用這個新版本並更改我使用的命名空間,因爲它與此dll的舊版本兼容。
所以我的問題是:是否有可能在AssemblyResolve事件中指定要在程序集中查找的名稱空間? 如果有辦法捕獲這個異常並嘗試使用不同的命名空間,那也是可以的。
謝謝。
即使答案是否定的,這很有幫助。謝謝。 – Jonyjack
@Jonyjack我對你的問題給了一些想法,我看不到一個簡單的解決方案,甚至不是一個簡單的解決方案。你可以創建一些shim類(一個用於舊的.dll,一個用於新的.dll),並從一個通用接口派生出這兩個Shim類(然後在你的代碼中只使用這個通用接口),但取決於你做與dll的對象可能是非常困難的。 – xanatos