通过字符串在不同的程序集中创建类的实例

本文关键字:集中 程序集 创建 实例 程序 字符串 | 更新日期: 2023-09-27 18:35:46

我需要创建一个类的实例,同时只有完整的类名(带有命名空间)和定义类的程序集的文件名。我知道程序集位于当前工作目录中。应使用默认构造函数(不带参数),因为它是唯一可用的构造函数。

经过一些谷歌,堆栈溢出和MSDN,我仍然不确定最佳解决方案是什么。将加载多个程序集,因此使用应用程序域会很好 (?)。

应用程序域文档说,我应该使用 CreateInstanceAndUnwrap,但我需要完整的程序集名称。据我所知,我只能通过加载程序集来获取它。这似乎有些效率很低。

在当前卸载的程序集中创建类实例的好方法是什么?

谢谢!

通过字符串在不同的程序集中创建类的实例

如果程序集已在 bin 文件夹或 GAC 中,则不必手动加载程序集。

您只需使用 Activator.CreateInstance 来实例化对象。

传递给CreateInstance的字符串必须是程序集限定的类型名称、含义、类型名称,后跟逗号和程序集名称。例如MyNameSpace.MyObject, MyAssembly .

这应该始终有效。

我相信

你想要Assembly.LoadFrom.这将按文件名为您提供程序集,然后可以使用该程序集通过反射实例化类。

最终,您需要加载程序集,因为它包含定义和实例化类所需的代码。但是,使用 AppDomain 走在正确的轨道上,因为这将允许您稍后卸载程序集。