C# 如何转换Func<;T、 对象>;房地产信息

C# 如何转换Func<;T、 对象>;房地产信息,c#,.net,func,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" } } public void转换器(Func F) { } 公共类

我需要从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"
  }
}
public void转换器(Func F)
{
}
公共类测试员
{
void main()
{
字符串名称=转换器(m=>m.Id);
//名称应等于“Id”
}
}
您需要的是:

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

public static string GetPropertyName<T, TValue>(Expression<Func<T, TValue>> property)
{
    var memberExpress = property.Body as MemberExpression;    
    return memberExpress.Member.Name;
}
公共静态字符串GetPropertyName(表达式属性)
{
var memberExpress=property.Body作为MemberExpression;
返回memberExpress.Member.Name;
}
您可以通过以下方式调用:

var user = new User();
string name = GetPropertyName(() => user.Name);
string name = GetPropertyName<User, string>(u => u.Id);
string name=GetPropertyName(u=>u.Id);

上一个示例中不需要变量
user