2013-03-31 130 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鍵命名空間,只要成功加載的程序集。