如何将Func <t,object>转换为PropertyInfo

时间:2016-01-23 13:56:09

标签: c# .net func

我需要从Func中提取属性名称,请尽可能帮助我。感谢。

public void Converter<T>(Func<T,Ojbect> F)
{

}
public class Tester
{
 void main()
  {
   String Name = Converter<User>(m=>m.Id);
  //Name should be equal to "Id"
  }
}

1 个答案:

答案 0 :(得分:3)

您需要的是:

public static string GetPropertyName<T>(Expression<Func<T>> property)
{
    var memberExpress = property.Body as MemberExpression;    
    return memberExpress.Member.Name;
}

然后您可以使用以下方式拨打电话:

var user = new User();
string name = GetPropertyName(() => user.Name);

甚至:

public static string GetPropertyName<T, TValue>(Expression<Func<T, TValue>> property)
{
    var memberExpress = property.Body as MemberExpression;    
    return memberExpress.Member.Name;
}

您可以使用以下方式致电:

string name = GetPropertyName<User, string>(u => u.Id);