为了账号安全,请及时绑定邮箱和手机立即绑定

将DLL加载到单独的AppDomain中

将DLL加载到单独的AppDomain中

桃花长相依 2019-12-02 13:05:30
我想动态加载一个或多个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继承。


查看完整回答
反对 回复 2019-12-02
?
慕慕森

TA贡献1856条经验 获得超17个赞

您可以使用AppDomain.CreateInstance方法来执行此操作。您需要调用ObjectHandle的Unwrap方法,该方法将返回以获取实际对象。


查看完整回答
反对 回复 2019-12-02
  • 3 回答
  • 0 关注
  • 812 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信