I'm pretty sure that this is not possible. Here's why:
- This could break type safety, since anyone can lookup a frame, get the object regardless of which AppDomain\Thread they are executing on or permission they have.
- The '
this
' (C#) identifier is really just an argument to the instance method (the first), so in reality their is no difference between static methods and instance methods, the compiler does its magic to pass the right this
to an instance method, which of course means that you will need to have access to all method arguments to get the this
object. (which StackFrame
does not support)
It might be possible by using unsafe code to get the pointer of the first argument to an instance method and then casting it to the right type, but I have no knowledge of how to do that, just an idea.
BTW you can imagine instance methods after being compiled to be like C# 3.0 extension methods, they get the this
pointer as their first argument.