Stack Frame Object Instances?

  • Thread starter Thread starter Mark Sisson
  • Start date Start date
M

Mark Sisson

Can you retrieve a calling object's instance from the stack via
reflection? So far I've only been able to traverse the stack and get
to a Type of the calling routine (using StackFrame.GetMethod and then
interogating that MethodBase object). What I'm trying to do is to
interrogate a property on the calling object instance.

Any ideas? Is this doable?
 
You need to get to the "this" argument of the calling function. This is not
really supported. That argument may not even be available. If it is not used
in the function beyond that point, the JIT-compiler would optimize it away
as it is not "alive".
 
Passing in the calling instance as a param isn't possible for me.
What I'm writing is a Trace Listener that writes to a database. I'm
trying to add more information to the database entry and a key piece
of information for me is the calling instance that generated the trace
message.

As a work around, I've modified my listener routine to interogated the
name of the current thread. Since all of the objects that will be
tracing are running in their own threads (this is a multi-threaded
processing engine) I can set the the name of the thread to give me a
clue as to what object I've got.

I WISH THERE WAS A BETTER WAY BECAUSE THIS MODEL WOULD NOT WORK IN ALL
SITUATIONS.
 
Back
Top