我在类库中有几个类(单独的程序集)。我将它引用到我的项目中,我想从该库初始化一个特定的类。我只知道它的名字。所有类都实现了一个接口。 这就是问题所在。
到目前为止我的代码:
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?
答案 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 ......?