我在當前項目中大量使用反射來大大簡化我的控制器和wcf服務之間的通信。我現在想做的是從一個沒有直接訪問HttpSessionStateBase(IE:不是控制器)的對象中從Session中獲取一個值。例如,一個ViewModel。我可以通過它或通過它的參考等,但這不是我的情況最佳。C#反射StackTrace獲取值
因爲一切都在我的情況有些點來自一個控制器,我可以做到以下幾點走麻袋到發起呼叫控制器,很簡單的東西:
var trace = new System.Diagnostics.StackTrace(); foreach (var frame in trace.GetFrames()) { var type = frame.GetMethod().DeclaringType; var prop = type.GetProperty("Session"); if(prop != null) { // not sure about this part... var value = prop.GetValue(type, null); break; } }
這裏的問題是我似乎無法解決如何獲取控制器或Session屬性的「實例」,以便我可以從中讀取它。
小心這樣工作:JITcompiler可以內聯函數/屬性,因此在發佈版本中不會看到它們。 – Stormenet 2010-03-13 13:51:27