如何从库中初始化一个类?

时间:2010-06-18 15:29:51

标签: c# reflection class assemblies

我在类库中有几个类(单独的程序集)。我将它引用到我的项目中,我想从该库初始化一个特定的类。我只知道它的名字。所有类都实现了一个接口。 这就是问题所在。

到目前为止我的代码:

using MyLibrary;
...
IMyInterface dll = Activator.CreateInstance("MyLibrary", "MyLibrary.NameOfClass") as IMyInterface;

但是dll总是为空。 有什么想法吗?

由于

更新

我删除对库的引用并将该代码重写为:

Assembly a = Assembly.Load("MyLibrary");
Type type = a.GetType("MyLibrary.SKClass");
IMyInterface obj = Activator.CreateInstance(type) as IMyInterface;

但obj为空。

如果我使用a.GetExportedTypes()检查了库类型,那么SKClass就在那里。那么为什么这段代码仍然返回null?

2 个答案:

答案 0 :(得分:2)

var assembly = Assembly.LoadFile(@"full\path\to.dll");

var type = assembly.GetType("Full.Namespace.Type");

var object = Activator.CreateInstance(type);

答案 1 :(得分:0)

你为什么不用这个......?

汇编a = Assembly.Load(“ClassLibrary1”); Interface1 i = a.CreateInstance(“ClassLibrary1.ClassName”)作为Interface1;

您是否有必要使用Activator ......?