首页 >后端开发 >C++ >我可以在运行时实例化一个类,只知道它的 DLL 和类型名称吗?

我可以在运行时实例化一个类,只知道它的 DLL 和类型名称吗?

Linda Hamilton
Linda Hamilton原创
2025-01-19 09:21:09491浏览

Can I Instantiate a Class at Runtime Knowing Only its DLL and Type Name?

运行时动态加载程序集和实例化类

仅知道DLL文件名和类名,能否在运行时实例化一个对象,而无需在项目中显式引用该程序集?此类通常实现一个接口,允许在实例化后进行类型转换。

程序集名称: library.dll 类型名称: Company.Project.Classname

无文件路径

由于没有绝对DLL路径,因此无法使用Assembly.LoadFile。DLL可能位于应用程序根目录、system32或GAC中。

解决方案

可以实现。使用Assembly.LoadFrom将程序集加载到内存中。然后,使用Activator.CreateInstance生成所需类型的实例。首先使用反射查找类型。

<code class="language-csharp">Assembly assembly = Assembly.LoadFrom("MyNice.dll");

Type type = assembly.GetType("MyType");

object instanceOfMyType = Activator.CreateInstance(type);</code>

改进的解决方案

给定程序集文件名和类型名,Activator.CreateInstance(assemblyName, typeName)可以解析为一个类型。这可以用try/catch块包装以进行错误处理。如果失败,则搜索可能存在其他程序集的目录,并根据需要应用先前的方法。

以上是我可以在运行时实例化一个类,只知道它的 DLL 和类型名称吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn