我知道這是可能使用反射和表達式的組合搶一個變量的名稱。然而,在財產/現場鏈接的情況下,是否可以獲取更多的變量名?
示例功能
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作爲MemberExpression' :-P –
所有這一切信息就在那裏,如果你願意的話。 'MemberExpression'的'Expression'將是另一個具有'person'的表達式。 – Servy
@Servy是的,事實證明它就在那裏。感謝您的正確方向! – James