.net反射中如何獲取呼叫引數的值?
你在tracemethod裡只傳入了methodinfo,這裡只包含了引數的定義資訊。你這麼想,假設你有個方法:
class a
}
這個時候你可以得到m的引數s的parameterinfo,但是這個時候它根本沒有值(也不應該有),它的值只有當你去呼叫這個方法時才確定。而只有methodinfo/parameterinfo是不行的。你這裡可以給tracemethod加個引數:
void tracemethod(methodinfo method, params
object parameters)
然後在mymethod裡呼叫它的時候把mymethod的引數都傳過去。
如果是這樣,也就不會有這個問題了。我是希望能主動的獲取,而不是被動的把引數傳遞過來。
我的目的,其實也就是如何在乙個函式被呼叫的時候,獲取當前這個函式的呼叫環境。
那你只能用aop的方式,根據上下文去獲取到值。園子裡講各種aop實現的文章很多,自己搜一下吧。不過代價都比較大,除非用現成的編譯期注入aop框架如post sharp。
//定義類
public
class myclass
}static
void main()
parameterinfo
methodinfo
iinvocation
反射的學習
首先了解一下類的概念 了解完類的概念,現在來了解一下反射 獲取class檔案物件方法 1.通過物件獲取 2.通過類獲取 3.通過class中的靜態方法獲取 class.forname 常用 首先建立乙個類 public class person public person string name,i...
python 反射 python中的反射
什麼是反射?有時我們要訪問某個變數或是方法時並不知道到底有沒有這個變數或方法,所以就要做些判斷。判斷是否存在字串對應的變數及方法。我們知道訪問變數時是不能加引號的,否則會被當成字串處理。如果要通過字串找到對應的變數,那該怎麼辦呢 反射就是用於解決上面兩個問題而產生的,所謂反射,按我的理解就是反過來告...
php反射函式
最常用的幾個個php反射函式 get class get class methods 1.get class 返回物件的類名 string get class object obj 返回物件例項 obj 所屬類的名字。如果 obj 不是乙個物件則返回false。note 在 php 擴充套件庫中定義...