using System.Linq.Expressions;
public static string NameOf<T>(Expression<Func<T, object>> expression)
var memberExpression = expression.Body as MemberExpression
?? ((UnaryExpression)expression.Body).Operand as MemberExpression;
return memberExpression.Member.Name;
public static void Main()
var name = Util.NameOf<Bar>(x => x.Baz);
public int Baz { get; set; }