c#中可以通過assembly來動態載入dll,然後由它建立型別,接著通過型別的invokemember方法來呼叫dll中類的方法以及屬性。
為了方便說明一下的方法,先說明一下dll的**,大致如下:
using
system;
namespace
clstestdll
public
string getvalue( int ncount )
!", ncount ); }
public
static
string getnewvalue( int ncount )
!", ncount ); }
public
string name
set }
} }
大致的步驟如下:
首先載入dll,具體如下:
// load assembly from dll file
assembly assembly = assembly.loadfrom( "clstestdll.dll");
其次,用載入的assembly來定義指定的型別,例如:
// create new type
type t = assembly.gettype( "clstestdll.testdll");
然後就可以通過新建的型別來呼叫類的方法。
如果是類的靜態方法,可以直接呼叫,如:
// call static member function by name
string strreturn = (string) t.invokemember("getnewvalue",
bindingflags.declaredonly |
bindingflags.public |
bindingflags.static | bindingflags.invokemethod,
null,
null,
new
object );
如果是類的非靜態方法或屬性,則需要通過型別,先生成類的物件,如:
// create new object of specific class name
object obj = t.invokemember(
null,
bindingflags.declaredonly |
bindingflags.public | bindingflags.nonpublic |
bindingflags.instance | bindingflags.createinstance,
null,
null,
null );
接著,就可以通過「obj」物件來進行呼叫了,如:
// call member function by name
strreturn = (string) t.invokemember("getvalue",
bindingflags.declaredonly |
bindingflags.public | bindingflags.nonpublic |
bindingflags.instance | bindingflags.invokemethod,
null,
obj,
new
object );
// set class property
t.invokemember("name",
bindingflags.declaredonly |
bindingflags.public | bindingflags.nonpublic |
bindingflags.instance | bindingflags.setproperty,
null,
obj,
new object );
// get class property
strreturn = (string) t.invokemember("name",
bindingflags.declaredonly |
bindingflags.public | bindingflags.nonpublic |
bindingflags.instance | bindingflags.getproperty,
null,
obj,
null);
如何動態呼叫DLL中類的方法以及屬性
來源 http blog.csdn.net knight94 archive 2006 04 10 657527.aspx 在c 中可以通過assembly來動態載入dll,然後由它建立型別,接著通過型別的invokemember方法來呼叫dll中類的方法以及屬性。為了方便說明一下的方法,先說明一下...
如何動態呼叫DLL中類的方法以及屬性
在c 中可以通過assembly來動態載入dll,然後由它建立型別,接著通過型別的invokemember方法來呼叫dll中類的方法以及屬性。為了方便說明一下的方法,先說明一下dll的 大致如下 using system namespace clstestdll public string getv...
動態載入類(在程式中呼叫DLL檔案)
動態載入類 動態載入dll 檔案 本人剛剛開始編寫程式不久,開發中發現一非常好的方法。大家共享。我們在編寫程式的時候經常會遇到這樣的情況 程式中要用到某種計算,而且這種計算的計算方式很多,我們不得不在編寫程式時就要考慮的十分全面,將各種情況到考慮到。但是這樣做又非常的費力,因為我們無法 到程式編好後...
動態載入類(在程式中呼叫DLL檔案)
我們在編寫程式的時候經常會遇到這樣的情況 程式中要用到某種計算,而且這種計算的計算方式很多,我們不得不在編寫程式時就要考慮的十分全面,將各種情況到考慮到。但是這樣做又非常的費力,因為我們無法 到程式編好後,還會出現什麼樣的計算方式。如果計算方式是在交付給客戶後,客戶新提出的我們就不得不將新的計算方式...
如何呼叫 DLL 中的函式
如何呼叫dll中的函式 在dll工程中的 cpp中函式定義如下 extern c declspec dllexport int add int a,char b 一 顯示連結 呼叫的dll的主工程的 main檔案中 如下 include include include intmain 呼叫的dll的...