I have a method in an object that is called from a number of places within the object. Is there a quick and easy way to get the name of the method that called this popular method.
Pseudo Code EXAMPLE:
public Main()
{
PopularMethod();
}
public ButtonClick(object sender, EventArgs e)
{
PopularMethod();
}
public Button2Click(object sender, EventArgs e)
{
PopularMethod();
}
public void PopularMethod()
{
//Get calling method name
}
Within PopularMethod()
I would like to see the value of Main
if it was called from Main
... I'd like to see "ButtonClick
" if PopularMethod()
was called from ButtonClick
I was looking at the System.Reflection.MethodBase.GetCurrentMethod()
but that won't get me the calling method. I've looked at the StackTrace
class but I really didn't relish running an entire stack trace every time that method is called.
In .NET 4.5 / C# 5, this is simple:
public void PopularMethod([CallerMemberName] string caller = null)
{
// look at caller
}
The compiler adds the caller's name automatically; so:
void Foo() {
PopularMethod();
}
will pass in "Foo"
.