如何動態呼叫DLL中類的方法以及屬性

2021-04-06 16:48:18 字數 2219 閱讀 2568

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的...