偶尔我们需要直接获取变量或属性的名称,如下:
class Men{
int age{get;set;}
}
Men m =new Men();
m.age;//这里我们想输出age
方法一:实现办法如下:
public static string PropName(Expression<Func<Object>> expr)
{
Expression e = expr.Body;
MemberExpression me = e as MemberExpression;
if (me == null)
{
UnaryExpression ue = e as UnaryExpression;
me = ue.Operand as MemberExpression;
}
return me.Member.Name;
}
用法:
Men m=new Men();
string prop= PropName(()=> m.age);//打印prop输出age
经测试,支持类型string,int,decimal,float,long,short,double,Enum及可空类型,如decimal?、int?。
方法二:这样写:
Men m=new Men();
string prop=nameof(m.age);//打印prop输出age