using system;
using system.io;
using system.net;
using system.reflection;
using system.codedom;
using system.codedom.compiler;
using microsoft.csharp;
using system.web.services.description;
using system.collections.generic;
//具體步驟:
namespace websvrcaller
private static type gettypefromcache(string url, string classname)
private static type gettypefromwebservice(string url, string classname)
//獲取wsdl
webclient webclient = new webclient();
stream stream = webclient.openread(url + "?wsdl");
servicedescription servicedes = servicedescription.read(stream);
servicedescriptionimporter servicedescriptionimporter = new servicedescriptionimporter();
servicedescriptionimporter.addservicedescription(servicedes, "", "");
codenamespace codenamespace = new codenamespace(@namespace);
//生成客戶端**類**
codecompileunit codecompileunit = new codecompileunit();
codecompileunit.namespaces.add(codenamespace);
servicedescriptionimporter.import(codenamespace, codecompileunit);
csharpcodeprovider csharpcodeprovider = new csharpcodeprovider();
icodecompiler icodecompiler = csharpcodeprovider.createcompiler();
//設定編譯引數
compilerparameters compilerparams = new compilerparameters();
compilerparams.generateexecutable = false;
compilerparams.generateinmemory = true;
compilerparams.referencedassemblies.add("system.dll");
compilerparams.referencedassemblies.add("system.xml.dll");
compilerparams.referencedassemblies.add("system.web.services.dll");
compilerparams.referencedassemblies.add("system.data.dll");
//生成**例項,並呼叫方法
system.reflection.assembly assembly = compilerresult.compiledassembly;
type t = assembly.gettype(@namespace + "." + classname, true, true);
return t;
}//動態呼叫web服務
public static object invokewebservice(string url, string methodname, object args)
public static object invokewebservice(string url, string classname, string methodname, object args)
object obj = activator.createinstance(t);
methodinfo mi = t.getmethod(methodname);
return mi.invoke(obj, args);
}catch (exception ex)
}private static string getwsclassname(string wsurl)
#endregion}}
呼叫:using system;
using system.collections.generic;
using system.componentmodel;
using system.data;
using system.drawing;
using system.text;
using system.windows.forms;
using system.net;
using system.io;
using microsoft.csharp;
using system.reflection;
using system.codedom;
using system.codedom.compiler;
using system.web.services.description;
using websvrcaller;
namespace test
在C 中動態載入類(在程式中呼叫DLL檔案)
本人剛剛開始編寫程式不久,開發中發現一非常好的方法。大家共享。我們在編寫程式的時候經常會遇到這樣的情況 程式中要用到某種計算,而且這種計算的計算方式很多,我們不得不在編寫程式時就要考慮的十分全面,將各種情況到考慮到。但是這樣做又非常的費力,因為我們無法 到程式編好後,還會出現什麼樣的計算方式。如果計...
在C 中呼叫C語言標準動態庫方法
cisco packet tracer 5.0軟體深入詳解使用教程 3 詳解網路嗅探工具的原理 sniffer wireshark 2010 年 07 月 19 日 seth c net程式設計 go to comment out mylib.dll dll implib mylib.lib myl...
在C 中動態呼叫native dll的匯出函式
在 c 中我們能夠通過 loadlibrary,getprocaddress 來動態呼叫 dll 的匯出函式.在 c 中也能夠用這樣的方式嗎?在 dotnet 2.0 裡面這樣是可以的,這完全得益於 2.0新增的乙個函式 marshal.getdelegateforfunctionpointer 方...