我想動態加載一個或多個DLL,以便它們以與主應用程序不同的安全性或基本路徑運行。如何將這些DLL加載到單獨的AppDomain中并從中實例化對象?
3 回答

FFIVE
TA貢獻1797條經驗 獲得超6個贊
進一步來說
AppDomain domain = AppDomain.CreateDomain("New domain name");
//Do other things to the domain like set the security policy
string pathToDll = @"C:\myDll.dll"; //Full path to dll you want to load
Type t = typeof(TypeIWantToLoad);
TypeIWantToLoad myObject = (TypeIWantToLoad)domain.CreateInstanceFromAndUnwrap(pathToDll, t.FullName);
如果一切正常(沒有引發異常),您現在將TypeIWantToLoad實例加載到新域中。您擁有的實例實際上是一個代理(因為實際對象位于新域中),但是您可以像使用普通對象一樣使用它。
注意:據我所知,TypeIWantToLoad必須從MarshalByRefObject繼承。

慕慕森
TA貢獻1856條經驗 獲得超17個贊
您可以使用AppDomain.CreateInstance方法來執行此操作。您需要調用ObjectHandle的Unwrap方法,該方法將返回以獲取實際對象。
- 3 回答
- 0 關注
- 961 瀏覽
添加回答
舉報
0/150
提交
取消