·3
使用methodinfo
發現以下資訊:方法的名稱、返回型別、引數、訪問修飾符(如
public
或private
)和實現詳細資訊(如
abstract
或virtual
)等。使用
type
的getmethods
或getmethod
方法來呼叫特定的方法。
example3 :assembly assem1 = assembly.load("classlibrary1, version=1.0.0.0, culture=neutral, publickeytoken=null");
assembly assem = assembly.loadfrom("classlibrary1.dll");
console.write(assem.fullname);
assemblyname assemname = assem.getname();
console.writeline("\nname: ", assemname.name);
console.writeline("version: .",
assemname.version.major, assemname.version.minor);
int i,j;
type types = assem.gettypes();
for (i = 0; i < types.getlength(0); ++i)
type mytype = types[0];
methodinfo methods=mytype.getmethods();
for (i = 0; i < methods.length; i++)
", methods[i].name);
console.writeline("public : ", methods[i].ispublic);
console.writeline("private : ", methods[i].isprivate);
console.writeline("static : ", methods[i].isstatic);
console.writeline("abstract : ", methods[i].isabstract);
console.writeline("isvirtual : ", methods[i].isvirtual);
console.writeline("返回型別¨ª : ", methods[i].returntype.tostring());
foreach (parameterinfo pi in ((methodinfo)methods[i]).getparameters())
, name=", pi.parametertype, pi.name);
}console.writeline("---------------");
}}
列印結果如下:
method'name : run
public : true
private : false
static : false
abstract : false
isvirtual : false
返回型別 : system.void
method'name : myreturnmethod
public : true
private : false
static : false
abstract : false
isvirtual : false
返回型別 : system.string
引數 parameter: type=system.string, name=abc
引數 parameter: type=system.int32, name=i
method'name : myreturnmethod
public : true
private : false
static : false
abstract : false
isvirtual : false
返回型別 : system.string
引數 parameter: type=system.string, name=abc
引數 parameter: type=system.int32, name=i
引數 parameter: type=system.string, name=a
4.使用constructorinfo了解建構函式的名稱、引數、訪問修飾符(如pulic 或private)和實現詳細資訊(如abstract或virtual)等。使用type的getconstructors或getconstructor方法來呼叫特定的建構函式。
example4:
assembly assem1 = assembly.load("classlibrary1, version=1.0.0.0, culture=neutral, publickeytoken=null");assembly assem = assembly.loadfrom("classlibrary1.dll");
console.write(assem.fullname);
assemblyname assemname = assem.getname();
console.writeline("\nname: ", assemname.name);
console.writeline("version: .",
assemname.version.major, assemname.version.minor);
int i,j;
type types = assem.gettypes();
type mytype = types[0];
constructorinfo constructorinfoobj = mytype.getconstructor(
bindingflags.instance | bindingflags.public, null,
callingconventions.hasthis, types, null);
if(constructorinfoobj != null)
else
C 反射技術之二讀取Attribute特性
我們可以通過乙個類的type的getcustomattributes方法來讀取這個類上所附加的特性。class keyattribute attribute 定義特性 標籤 keyattribute 打上特性 標籤 public int key讀取到類所對應的表的特性了,接下來我們該讀取類裡包含的屬...
C 知識點之二
inq 初體驗 linq 全稱為language integrated query 語言繼承查詢 語法 from 變數in 資料來源物件where 條件表示式orderby排序列 ascending descending group 變數by 分組條件into 臨時識別符號select 選擇列 li...
C 基礎知識之二
c 基礎知識之二 1 靜態字段 靜態成員 被類的所有例項共享,對其改變,對所有例項都可見。2 宣告為靜態的有 字段 方法 屬性 建構函式 運算子 事件。3 常量與靜態量不同 常量沒有自己的儲存位置,在編譯時被編譯器替換。4 類屬性與類字段不同 屬性是乙個函式成員,它不為資料儲存分配記憶體並執行 5 ...