這篇**實現了本地路徑查詢dll檔案,與例項化物件類的方法來引用方法,具體看**剛學的做個筆記;
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
using system.reflection;
using c_sharp_mybcl;
namespace c_sharp_reflect
//例項化類來引用
//class1 class1 = new class1();
//type type = class1.gettype();
//通過資料夾查詢類庫來引用
//assembly ass = assembly.loadfrom(@"d:\vs專案\c sharp_mybcl\c sharp_mybcl\bin\debug\c sharp_mybcl.dll");
//type type = ass.gettype("c_sharp_mybcl.class1");
//標誌位
//bindingflags flag = bindingflags.public | bindingflags.instance;
//遍歷類中所有公開字段,函式
//foreach (var item in type.getmembers())
////遍歷類中所有私有字段,函式
//遍歷私有的需要傳入標誌位
//foreach (var item in type.getmembers(flag))
////引數
//object cons = new object[1];
//cons[0] = 123;
//引數型別
//type types = new type[1];
//types[0] = typeof(int);
//例項
//object obj = activator.createinstance(type);
//訪問
//methodinfo methodinfo = type.getmethod("fun1", flag, type.defaultbinder, types, null);
cons);
/*呼叫程式集靜態方法
*首先通過資料夾查詢到程式集檔案
*dll檔案點類
*標誌位
*然後檢視類中方法
*實列*訪問方法
*執行實列
*/assembly assembly1 = assembly.loadfrom(@"d:\vs專案\c sharp_mybcl\c sharp_mybcl\bin\debug\c sharp_mybcl.dll");
type type = assembly1.gettype("c_sharp_mybcl.class2");
bindingflags flag2 = bindingflags.static | bindingflags.public | bindingflags.nonpublic | bindingflags.instance;
foreach (var item in type.getmembers())
object obj1 = activator.createinstance(type);
methodinfo method = type.getmethod("myclass2fun", flag2);
method.invoke(obj1, null);
console.readkey();} }
}
C 解析DLL 反射
前段時間敲 需要動態的載入的外部dll,並且解析dll,來讀取dll中的類,屬性,有時候還需要讀取特性的值。這個問題剛開始遇到,是一點想法沒有,以前沒有這麼用過,後來查資料,請教別人,終於有了結果。當有了 之後,發現在找問題的過程中,我糊塗了,因為解決這個問題的方式主要是 反射。我是通過利用反射進行...
PE檔案本地DLL注入實現
之前寫過乙個利用遠端執行緒注入dll的工具,大致過程如下 1.使用openprocesstoken lookupprivilegevalue adjusttokenprivileges函式修改當前程序的的訪問令牌,獲得除錯許可權。2.openprocess開啟目標程序,用virtualallocex...
c 反射 動態載入dll簡單例子
假設已有元件classlibrarytest.dll,放置於程式目錄下。元件中classlibrarytest命名空間下有test類,類中有方法sum。下面示例就是動態載入元件並呼叫sum方法的簡例 1 static void main string args 2 classlibrarytest....