在运行时概念期间加载程序集

本文关键字:加载 程序集 运行时 | 更新日期: 2023-09-27 17:54:07

加载程序集后,实例化程序集时:

Assembly asm = Assembly.LoadFile(@"c:'file.dll");
Type type = asm.GetType("DLLTYPE");
object instance = Activator.CreateInstance(type);

c#是如何知道类型的?
从我的逻辑,dll应该有头定义对象类型。
那么为什么DLLTYPE字符串是for ?

在运行时概念期间加载程序集

c#是如何知道类型的?

您已将其作为参数传递:

Type type = asm.GetType("DLLTYPE");

那么为什么是"DLLTYPE"字符串呢?

是要实例化的名称空间和类名:

Namespace.ClassName

要小心,因为如果在typename中出错,这个方法将返回null。如果要确保该类型存在,可以使用以下重载:

Type type = asm.GetType("Namespace.ClassName", true);

这将抛出一个异常,而不是返回null,这将更容易调试,而不是你在Activator.CreateInstance方法上得到的NRE。