2012-12-19 34 views
0

這是我在C#DLL無法調用動態加載的DLL類從窗口服務

namespace MyNS 
{ 
    public class MyClass 
    { 
     public static int Execute(string logKey, 
            string key, 
            XmlNode xmlPars) 
     { 
      return 0 
     } 
    } 
} 

我加載在運行時和負載類DLL類型中_type變量類。但是,當我調用函數從一個Windows服務是這樣執行:

counter = (int)_type.InvokeMember("Execute", 
            BindingFlags.Public | 
            BindingFlags.InvokeMethod | 
            BindingFlags.Static, 
            null, 
            null, 
            new object[] { 
                logKey, 
                Key, 
                _xmlParams 
               }); 

我得到「異常已通過調用的目標引發異常。」
我在這裏做錯了什麼?

+0

在什麼行引發異常?我嘗試了一個類似的例子。你可以發佈你如何加載程序集並創建類型? – Novice

+0

任何'InnerException'? – Agent007

回答

1

如何加載DLL,請分享代碼以動態加載dll。

下面是示例代碼。

Assembly assembly = Assembly.LoadFrom("ABC.dll"); 
object o = Activator.CreateInstance(assembly.GetType("ClassName")); 
/// then invoke the method 
+0

感謝您的回覆。
我以與你相同的方式加載DLL。每件事情都可以,但我發現如果DLL(我的插件)駐留在不同的目錄中,並且DLL引用了其他DLL。我必須將其他DLL複製到Windows服務的目錄而不是Plugin目錄。
現在問題已解決。 – QuangND