【发布时间】:2023-03-05 22:02:01
【问题描述】:
我在当前项目中大量使用反射来大大简化我的控制器和 wcf 服务之间的通信。我现在要做的是从无法直接访问 HttpSessionStateBase 的对象中的 Session 获取值(IE:不是控制器)。例如,视图模型。我可以传递它或传递对它的引用等,但这在我的情况下并不是最佳的。
由于在我的场景中的某个时刻所有内容都来自控制器,我可以执行以下操作来将麻袋传送到发起调用的控制器,这很简单:
var trace = new System.Diagnostics.StackTrace(); foreach(trace.GetFrames() 中的 var 帧) { var type = frame.GetMethod().DeclaringType; var prop = type.GetProperty("Session"); 如果(道具!=空) { // 不确定这部分... var value = prop.GetValue(type, null); 休息; } }这里的问题是我似乎无法弄清楚如何获取控制器的“实例”或 Session 属性,以便我可以从中读取。
【问题讨论】:
-
注意这样的工作:JITcompiler 可以内联函数/属性,因此您不会在发布版本中正确看到它们。
标签: c# model-view-controller reflection stack-trace