關於反射一些總結

2022-03-02 11:21:53 字數 1399 閱讀 5613

1.建立實體

person如下類:

view code

public

class person

[displayattribute(description = "

年齡")]

public

int age

[displayattribute(description = "

返回方法

")]public

string getval()

public

int currentage;

}

2.通過反射,讀取資訊

type t = typeof(person);

//得到型別的所有資訊(包括方法,屬性,字段)

var fils = t.getmembers();

//得到所有的屬性

var p=t.getproperties();

//得到所有的字段

var fs= t.getfields();

//得到所有的方法

var ms = t.getmethods();

讀取所有的資訊中的attribute屬性

程式碼如下:

view code

foreach (memberinfo m in fils)

類中的方法屬性

", t.name, m.name,d.gettype().name, d.description);

}else 類中的方法

", t.name, m.name);}}

}

3.根據type 建立實體,呼叫方法等

// 建立person類

type t = typeof(person);

object obj = t.invokemember(null,

bindingflags.declaredonly |

bindingflags.public | bindingflags.nonpublic |

bindingflags.instance | bindingflags.createinstance, null, null, null);

//呼叫person類中的getval方法

var t2 = t.invokemember("getval",

bindingflags.declaredonly |

bindingflags.public | bindingflags.nonpublic |

bindingflags.instance | bindingflags.invokemethod, null, obj, null);

var atts= attribute.getcustomattributes(typeof(person).assembly);

關於反射的一些總結

關於反射的一些總結 1 load,loadfrom和loadfile load 只載入本地程式集中指定的類 通過命名空間等方式指定 loadfrom 通過外部相對或者絕對路徑載入指定的類庫或者exe等檔案,且重複載入相同程式集僅第一次有效 如果該程式集引用其它程式集,會被自動載入。loadfile ...

關於Java反射的一些事

乙個類中,private的屬性或方法,如何對這些屬性進行讀寫操作或方法進行呼叫呢,答案就是反射。最近在寫單元測試用例時,發現通過反射來測試一些private的方法或設定private的屬性非常實用。先看定義乙個類,其中有乙個private的屬性和乙個private的方法,並且建構函式也是乙個priv...

關於反射機制的一些示例

通過乙個物件獲得乙個完整的包名和類名 package com.ntqingniao.reflect public class client2 class demo2例項化class類物件 package com.ntqingniao.reflect public class client3 clas...