動態載入類(動態載入DLL檔案) zz

2022-05-01 04:36:09 字數 950 閱讀 8132

本人剛剛開始編寫程式不久,開發中發現一非常好的方法。大家共享。

我們在編寫程式的時候經常會遇到這樣的情況:程式中要用到某種計算,而且這種計算的計算方式很多,我們不得不在編寫程式時就要考慮的十分全面,將各種情況到考慮到。但是這樣做又非常的費力,因為我們無法**到程式編好後,還會出現什麼樣的計算方式。如果計算方式是在交付給客戶後,客戶新提出的我們就不得不將新的計算方式寫人程式中,然後重新編譯,再交給客戶。這樣做是相當麻煩的,而且只為了這麼一小段程式,就要重新編譯整個工程,似乎代價也挺大的。

使用ms.net中system.reflection中的一些方法,可以幫助我們很好的解決上面的問題。

首先,在遇到上面提出的問題的時候,我們先要進行一下分析,這種計算需要一些什麼引數?在不同的計算方式中,它們共同的引數是什麼?不同的計算方式中特有的引數是否可以通過共有的引數計算出來,或是通過其它方法獲得?分析完後,提取出可用的共同引數。

接下來,我們就可以編寫計算方法了。將這種計算的每一種方式都寫成乙個dll乙個類中的方法,並將其編譯為乙個dll檔案。ms.net中,類的格式要定死,也就是說編寫的類的namespace和class要一樣,類中的方法名稱也必須是一樣的。而且,方法的引數就是上面所說的共同引數。

然後,將編譯好的dll檔案放在同一資料夾內,隨程式一起發布就可以了。

在程式中可以這樣處理所要用到的不同計算方式:給每一種計算方式起乙個名字(客戶能夠明白的),然後將這些名字放在下拉列表框的text屬性中,並將對應的dll檔名放在下拉列表框的value屬性中。這樣,使用者選擇不同的計算方式就可以呼叫不同dll檔案中的計算方法了。

下面是乙個簡單的示例:

我將計算方式的名字和dll檔名放在乙個xml檔案中,程式載入時將它們讀取到下拉列表框中。方法如下:(asp.net中)

// 在此處放置使用者**以初始化頁面

if(page.ispostback==false)

e-mail:[email protected]

動態載入dll

利用反射進行動態載入和呼叫.assemblyass assembly.loadfrom dllpath 利用dll的路徑載入 載入dll後,需要使用dll中某類.type type ass.gettype typename 利用型別的命名空間和名稱獲得型別 需要例項化型別,才可以使用,引數可以人為的...

Untiy動態載入 dll檔案

這裡先說一下反射 system.reflection命名空間 2 assembly 程式集類 3 module 模組 4 type 使用反射得到型別資訊的最核心的類 我們用assembly類來載入已經打包好的dll檔案。實現 我在這裡呼叫的是dll檔案裡的class1類的myfun 方法 協程的意義...

靜態載入dll和動態載入dll

一,首先編寫dll 建win32空dll工程 標頭檔案.h extern c declspec dllexport int max int a,int b extern c 解決函式名由於不同編譯器造成的名字匹配問題,通常c 編譯器編譯時會對函式進行改名,而c編譯器不會 extern c decls...