using System;
using System.ComponentModel;
using System.Linq.Expressions;
using System.Reflection;
public static class ClassExt
{
private static MemberInfo GetMemberInfo(Expression expression)
{
LambdaExpression lambdaExpression = (LambdaExpression)expression;
MemberExpression memberExpression = (!(lambdaExpression.Body is UnaryExpression))
? ((MemberExpression)lambdaExpression.Body)
: ((MemberExpression)((UnaryExpression)lambdaExpression.Body).Operand);
return memberExpression.Member;
}
public static string PropName<TProperty>(this object obj, Expression<Func<TProperty>> property)
{
return GetMemberInfo(property).Name;
}
} class A {
public int Prop { get; set; }
private void Example()
{
string propName = this.PropName(() => Prop);
Console.WriteLine(propName); //Prop
}
}