2013-02-19 19 views
2

即使组件未被执行程序集引用,用户Activator.CreateInstance()是否可以实例化给定Type.FullNameAssembly Name的类型?是否有可能在未静态引用的程序集中的类型上调用Activator.CreateInstance?

+5

这正是'CreateInstance'的用途。如果它*被当前程序集引用,则可以通过代码中的类型引用它。 – 2013-02-19 15:42:49

+0

是的,正是它意味着要做的,只要程序集绑定成功(目标程序集位于“正在执行的文件夹”,GAC等...) – jbl 2013-02-19 15:57:36

回答

1

是的,首先你必须加载程序集。

假设你有一个“插件”文件夹中寻找到:

  foreach (FileInfo f in new DirectoryInfo("c:\\plugins").GetFiles("*.dll")) 
      { 
       System.Reflection.Assembly.LoadFrom(f.FullName); 
      } 

现在集加载并且可以创建使用Activator.CreateInstance类型。

0

是。这就是反射的美丽。您可以通过知道它的名称来加载程序集,然后可以创建在该程序集中声明的类型。

相关问题