【发布时间】:2013-10-23 01:13:56
【问题描述】:
前言
我知道可以使用反射和表达式的组合来获取变量的名称。但是,在属性/字段链接的情况下,是否可以不仅仅获取变量的名称?
示例函数
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"
【问题讨论】:
-
认为你的意思是
expression.Body as MemberExpression:-P -
所有信息都在里面,如果你愿意的话。
MemberExpression的Expression将是另一个包含person的表达式。 -
@Servy 是的,原来一切都在那里。感谢您朝着正确的方向前进!
标签: c# reflection lambda expression