Если вы используете .NET, вы также можете использовать LINQ для определения этого:
public static string GetName<T>(Func<T> expr)
{
var il = expr.Method.GetMethodBody().GetILAsByteArray();
return expr.Target.GetType().Module.ResolveField(BitConverter.ToInt32(il, 2)).Name;
}
Я не могу претендовать на кредит для этого решения - оно пришло от здесь .