C# Reflection StackTrace get value

Posted by John on Stack Overflow See other posts from Stack Overflow or by John
Published on 2010-03-13T13:48:51Z Indexed on 2010/03/13 15:55 UTC
Read the original article Hit count: 371

Filed under:
|
|
|

I'm making pretty heavy use of reflection in my current project to greatly simplify communication between my controllers and the wcf services. What I want to do now is to obtain a value from the Session within an object that has no direct access to HttpSessionStateBase (IE: Not a controller). For example, a ViewModel. I could pass it in or pass a reference to it etc. but that is not optimal in my situation.

Since everything comes from a Controller at some point in my scenario I can do the following to walk the sack to the controller where the call originated, pretty simple stuff:

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

The trouble here is that I can't seem to work out how to get the "instance" of the controller or the Session property so that I can read from it.

© Stack Overflow or respective owner

Related posts about c#

Related posts about reflection