在运行时概念加载组件

时间:2013-01-17 14:12:37

标签: c# assemblies

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

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

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

1 个答案:

答案 0 :(得分:3)

  

C#如何知道类型?

您已将其作为参数传递:

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

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

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

Namespace.ClassName

请注意,如果您在typename中出错,此方法将返回null。如果要确保该类型存在,可以使用以下重载:

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

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