假設另乙個工程中的所有類都編譯到乙個dll檔案中了,在這很多的類當中,有乙個類叫stringutil,命名空間在hsmp.commonbasic.common下
該類中有乙個方法:
public double getsum(double x,double y)
編譯後dll檔案的存放路徑是:d:/test/hsmp.commonbasic.dll
現在的問題是,如何通過程式呼叫該dll檔案中的getsum方法
大概有以下幾步:
using system.reflection;
a. //這裡要用loadfrom,只有在本工程裡新增了該dll的引用後才可以使用load
assembly objass = assembly.loadfrom(@ "d:/test/hsmp.commonbasic.dll ");
類的全路徑
type t=objass.gettype( "hsmp.commonbasic.common.stringutil ");
//動態生成類stringutil的例項
object obj=system.activator.createinstance(t);
//引數資訊,getsum需要兩個int引數,如果方法沒有引數,就宣告乙個長度為0的陣列
system.type paramtypes = new system.type[2];
paramtypes[0] = system.type.gettype( "system.int32 ");
paramtypes[1] = system.type.gettype( "system.int32 ");
//找到對應的方法
methodinfo p = t.getmethod( "getsum ", paramtypes)
//引數值,如果所呼叫的方法沒有引數,不用寫這些
object parameters = new object[2];
parameters[0] = 3;
parameters[1] = 4;
object objretval = p.invoke(obj, parameters); //如果沒有引數,寫null即可。
System Reflection 反射技術例項
專案結構 reflectionexample.csproj helloworld.cs program.cs 源 helloworld.cs using system using system.collections.generic using system.text namespace refle...
C 反射技術應用
反 射 reflection 是.net中的重要機制,通過放射,可以在執行時獲得.net中每乙個型別 包括類 結構 委託 介面和列舉等 的成員,包括 方法 屬性 事件,以及建構函式等。還可以獲得每個成員的名稱 限定符和引數等。有了反射,即可對每乙個型別瞭如指掌。如果獲得了建構函式的資訊,即可直 接建...
c 高階技術 反射
反射?難道是物理中光的反射?no no no 這個 反射 和物理一點關係都沒有!那什麼是反射呢?我個人的理解是 在程式中 動態的新增程式的功能 新增dll檔案 無需在源 中新增 從而實現為程式的功能 公升級 說的有些官方了 下面我舉幾個例子 我們都玩過遊戲 就拿我以前玩的qq飛車來說 遊戲廠商會隔一...