C# 如何转换Func<;T、 对象>;房地产信息
我需要从Func中提取属性名称,如果可能,请帮助我。谢谢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) { } 公共类
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
。