2013-03-31 201 views
1

所以,我计划在它的资源,我想读这样一个DLL:加载从资源DLL

 Assembly assembly = Assembly.Load(Resources.func); 
     Type type = assembly.GetType("Func"); 
     dynamic functions = Activator.CreateInstance(type); 
     functions.Test(); 

出于某种原因,它不断在该行抛出一个空的错误:

dynamic functions = Activator.CreateInstance(type); 

DLL的命名空间是Func,类的名称也是Func。谁能帮我这个?我一直在Google上搜索最后一个小时,但我找不到解决方案。

UPDATE

当我使类非静态,并使用assembly.GetType( “Func.Func”);,它抛出一个异常RuntimeBinder当我做functions.Test();.也许这有助于多一点?

+0

'assembly.GetType( “Func.Func”)',也许? – Aneri

回答

1

尝试使用Func类的完整类型名称。如果命名空间是Func和类型是Func,你应该尝试使用:

Type type = assembly.GetType("Func.Func"); 
+0

这使得它抛出一个system.missingMethodException而 它不能使一个抽象类 – user2073973

+0

最后,这并获得成功,现在我可以调用使用functies.GetMethod(“测试”)的函数调用(NULL,NULL); – user2073973

+0

你做了它的到来。我不知道如何定义你的'Func'类,但不能实例化,或者叫抽象类的方法,除非它们是静态的。这似乎调用静态方法是你的具体情况,所以'.Invoke(NULL,...)'会工作。 –

1

您可以使用GetType("Func.Func"),它会返回一个名为Func键类在一个名为Func键命名空间,只要成功加载的程序集。