前言
我知道可以使用反射和表达式的组合来获取变量的名称。但是,在属性/字段链接的情况下,是否可以不仅仅获取变量的名称?
示例函数
public void DisplayVarName<T>(Expression<Func<T>> expression){
MemberExpression memberExpression =
expression.Body as MemberExpression;
Console.WriteLine(memberExpression.Member.Name);
}
示例 1
string helloWorldStr = "Hello World";
DisplayVarName(() => helloWorldStr); // Outputs "helloWorldStr"
示例 2
Person person = new Person(){ Name = "Santa Clause" };
DisplayVarName(() => person.Name); // Outputs "Name"
问题
有没有办法将 lambda 运算符右侧的内容存储在字符串中?
示例 2 将产生"person.Name"
而不是简单地产生"Name"