在C#中将属性名称作为字符串获取

MaP*_*aPi 0 c# reflection

是否可以编写一个返回对象属性的字符串值的函数?

如果我有一个名为apple的对象,它有一个名为peel的方法,我希望有一个方法在调用getAttributeName(apple.peel)时返回"peel".

我该怎么做?

L.B*_*L.B 5

您可以编写扩展方法

public static string GetPropName<T, P>(this T obj, Expression<Func<T, P>> lambda)
{
    var member = lambda.Body as MemberExpression;
    var prop = member.Member as PropertyInfo;
    return prop.Name;
}
Run Code Online (Sandbox Code Playgroud)

并像这样使用它

var u = new User();
string name = u.GetPropName(x=>x.name);
Run Code Online (Sandbox Code Playgroud)