How can I get the name of the calling function in C#?

c#

Solution

upgrade to c# 5 and use `CallerMemberName`

public void Method([CallerMemberName] string caller="")
{
}

EDIT

Other nice things with c# 5

public void Method([CallerMemberName] string name="",
                   [CallerLineNumber] int line=-1,
                   [CallerFilePath] string path="")
{
}

Problem

I need to get the name of the calling function in C#. I read about stackframe method but everywhere its said its not reliable and hurts the performance. But I need it for production use. I am writing a custom tracer which will be logging the name of the method from which trace was called as well. Could someone please help with a efficient method to get the calling function name? I am using Visual Studio 2010.

Original source