运行时动态创建类实例
仅知道DLL名称和类名,无需在项目中添加程序集引用,即可在运行时创建对象实例。此功能特别适用于插件系统或依赖注入等场景。
使用 Assembly.LoadFrom()
要将程序集加载到内存中,请使用 Assembly.LoadFrom() 方法,并提供 DLL 文件的路径:
<code class="language-csharp">Assembly assembly = Assembly.LoadFrom("library.dll");</code>
查找 Type 对象
加载程序集后,使用反射来定位特定类型:
<code class="language-csharp">Type type = assembly.GetType("Company.Project.Classname");</code>
创建实例
最后,使用 Activator.CreateInstance() 创建该类型的对象实例:
<code class="language-csharp">object instanceOfMyType = Activator.CreateInstance(type);</code>
处理未知 DLL 位置
如果您没有 DLL 的绝对路径,则可以依赖 .NET 类型解析机制:
<code class="language-csharp">object instanceOfMyType = Activator.CreateInstance("library.dll", "Company.Project.Classname");</code>
此方法将自动搜索各种位置,包括应用程序根目录、system32 和 GAC,以查找程序集并解析类型。
高级定制
如有必要,您可以通过实现自定义的 DLL 搜索机制来增强此解决方案,以便搜索特定目录中的 DLL。这在您存储默认类型解析机制未搜索的其他程序集的场景中,将提供更大的灵活性。
以上是如何从程序集和类型名称动态实例化类?的详细内容。更多信息请关注PHP中文网其他相关文章!