gpt4 book ai didi

C# 反射 StackTrace 获取值

转载 作者:行者123 更新时间:2023-11-30 19:50:20 24 4
gpt4 key购买 nike

我在我当前的项目中大量使用反射来极大地简化我的 Controller 和 wcf 服务之间的通信。我现在想做的是从无法直接访问 HttpSessionStateBase(即:不是 Controller )的对象中的 Session 获取值。例如,一个 View 模型。我可以传入它或传递对它的引用等,但这在我的情况下不是最佳选择。

由于在我的场景中的某个时刻,所有内容都来自 Controller ,因此我可以执行以下操作,将麻袋带到调用发起的 Controller ,非常简单的事情:

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;      }}

这里的问题是我似乎无法弄清楚如何获取 Controller 的“实例”或 session 属性以便我可以从中读取。

最佳答案

这是不可能的。将参数传递给方法的方式是一个实现细节,留给了 JIT 编译器。例如,x86 和 x64 之间非常不同。 x86 在堆栈上传递参数,x64 通过寄存器传递前 4 个参数。浮点值在 FPU 堆栈或 SSE 寄存器上传递。等等。

调试器通过使用 JIT 编译器生成的调试信息了解细节。但是在程序中使用调试接口(interface)是行不通的,程序不能 self 调试。

关于C# 反射 StackTrace 获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2438552/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com