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

时间:2014-02-24 15:22:37

标签: c# reflection

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

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

我该怎么做?

1 个答案:

答案 0 :(得分: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;
}

并像这样使用

var u = new User();
string name = u.GetPropName(x=>x.name);