动态加载程序集、定位类和调用方法提出了独特的挑战。 本文详细介绍了完成此任务的安全有效的方法。
直接加载 DLL 并访问其类的常见方法通常会导致转换错误。 卓越的解决方案利用了 AppDomains 的强大功能。
不要直接加载程序集,而是将其封装在自己的 AppDomain 中。这提供了增强的安全性和控制。
改进后的代码示例:
<code class="language-csharp">var domain = AppDomain.CreateDomain("NewDomainName"); var t = typeof(TypeIWantToLoad); var runnable = domain.CreateInstanceFromAndUnwrap(@"C:\myDll.dll", t.Name) as IRunnable; if (runnable == null) throw new Exception("broke"); runnable.Run();</code>
这是一个细分:
使用 AppDomains 提供:
对于需要对动态加载和卸载进行更多控制的高级方案,托管加载项框架(System.AddIn 命名空间)提供了一个强大且强大的解决方案来管理加载项和扩展。
以上是如何从动态加载的程序集中安全地加载、定位和执行类方法?的详细内容。更多信息请关注PHP中文网其他相关文章!