一尘不染

将DLL加载到单独的AppDomain中

c#

我想动态加载一个或多个DLL,以便它们以与主应用程序不同的安全性或基本路径运行。如何将这些DLL加载到单独的AppDomain中并从中实例化对象?


阅读 207

收藏
2020-05-19

共1个答案

一尘不染

进一步来说

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继承。

2020-05-19