2016-06-14 60 views
0

我有一個叫做'A'的Web服務。在Web服務C中調用DLL的動態函數#

在這個WS上,我只想留下看安裝的文件夾,換句話說,一起主要的DLL文件。

在這個目錄上,我打算把我的項目的「模塊」,並與我的WS共享功能(操作合同)。

例如:

ModuleOne.dll具備的功能:

string[] getUsersFromDatabase(); 

MyService.dll具備的功能:

object CallEventByName(string eventName, params string parameters); 

和我想象中的使用:

foreach string file in fileList 
// Check if DLL file have the function equal to 'eventName', 
// call the function passing your parameters if have 

當我創建申請SOAP,指明函數名稱和參數。我的WS需要智能來管理這個請求並返回「返回」哈哈。

我可以這樣做嗎?

+0

使用反射來調用DLL函數從WS代碼。 – anmarti

回答

0

這樣的事情,有可能是一個問題,如果你想要加載DLL具有相關性,則具有負載也是這個DLL

object CallFunction(string[] fileList , string eventName , object[] parameters){ 
     foreach(var file in fileList) 
     { 
      Assembly assem = Assembly.LoadFrom(file); 
      foreach(var t in assem.GetTypes()) 
      { 
       var methodInfo = t.GetMethod(eventName); 
       if(methodInfo != null) 
       { 
        var obj = Activator.CreateInstance(t); 
        return methodInfo.Invoke(obj , parameters); 
       }  
      } 
     } 

     return null; 
    } 
+0

我如何用你的依賴加載程序集? – jsfelipearaujo