0

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

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

C#如何知道类型?
从我的逻辑来看,dll应该有定义对象类型的标题。
那么为什么是DLLTYPE字符串呢?

4

1 回答 1

3

C#如何知道类型?

您已将其作为参数传递:

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

那么为什么是“DLLTYPE”字符串呢?

它是您要实例化的命名空间和类名:

Namespace.ClassName

请小心,因为如果您在类型名中输入错误,此方法将返回 null。如果要确保类型存在,可以使用以下重载:

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

这将引发异常而不是返回 null,这将更容易调试,而不是您在该Activator.CreateInstance方法上获得的 NRE。

于 2013-01-17T14:14:07.897 回答