i have:
class parent
{
public static string GetTypeName()
{
/* here i want to get the caller's type
So child.GetTypeName() should display "child" */
}
}
class child : parent { }
static void Main()
{
Console.WriteLine(child.GetTypeName());
}
Is it possible somehow to get the caller's type in base class?
It is not possible unless you pass the caller to the method (as an argument) or walk the stack frame to get the caller.
The compiler substitutes parent
for child
when calling parent
's static methods through the child
type. For example, here's the IL code for a call to child.GetTypeName()
:
IL_0002: call class [mscorlib]System.Type Tests.Program/parent::GetTypeName()
I believe this.GetType()
will do this. But can't check at the moment.
(assuming you want the child's type in the parent's method.)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With