日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

反射动态调用DLL类库测试

發(fā)布時間:2024/9/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 反射动态调用DLL类库测试 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

定義:
可以在運行時獲得.NET中每一個類型(包括類、結(jié)構(gòu)、委托、接口和枚舉等)的成員,包括方法、屬性、事件,以及構(gòu)造函數(shù)等。還可以獲得每個成員的名稱、限定符和參數(shù)等。有了反射,即可對每一個類型了如指掌。如果獲得了構(gòu)造函數(shù)的信息,即可直接創(chuàng)建對象,即使這個對象的類型在編譯時還不知道

同一個功能不用反射同樣能實現(xiàn),那為什么一定要用反射,一直不太明白他的作用,但C#里推崇較甚,今天到網(wǎng)上查了段反射動態(tài)調(diào)用DLL類庫的代碼,調(diào)試了下通過了

說明:通過System.Reflection.Assembly動態(tài)調(diào)用classTest.dll 中GetStr(string strValue)的方法,而不做添加引用操作
????? classTest.dll 包含方法 public static string GetStr(string strValue);參數(shù)是什么則返回什么
??????測試DLL下載:/Files/lmjob/classTest.rar

?

代碼如下:

System.Reflection.Assembly asm = System.Reflection.Assembly.LoadFile("D:\\ProjectTest\\classTest\\classTest\\bin\\Debug\\classTest.dll");? //通過路徑載入動態(tài)庫
??????? Type t = asm.GetType("classTest.Class1");? //得到Class
??????? System.Reflection.ConstructorInfo conn = t.GetConstructor(new Type[0]); //獲取沒有參數(shù)的構(gòu)造函數(shù)?
??????? object a1 = conn.Invoke(new object[0]);? //調(diào)用沒有參數(shù)的構(gòu)造函數(shù)Invoke,返回object它其是a類
??????? System.Reflection.MethodInfo meth = t.GetMethod("GetStr", new Type[] { typeof(String) }); //獲取參數(shù)類型為string,函數(shù)名為GetStr的方法
??????? string aa = meth.Invoke(a1, new object[] { "我是中國人" }).ToString(); //在a1上調(diào)用GetStr方法,參數(shù)為"我是中國人"

??????? Response.Write("值:" + aa);??? //輸入值??? 正確結(jié)果為“我是中國人”

補充一、通過Load反射創(chuàng)建實例:
System.Reflection.Assembly ass = System.Reflection.Assembly.Load("Xys.METS.Model");
Xys.METS.Model.DUTY_INFO info = (Xys.METS.Model.DUTY_INFO )ass.CreateInstance
("Xys.METS.Model.DUTY_INFO");

info.DutyName = "aaa";

Response.Write(info.DutyName);


?

總結(jié)

以上是生活随笔為你收集整理的反射动态调用DLL类库测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。