2010-09-09 68 views
3

我需要獲取表達式參數的名稱。我想要做的是類似於FluentNhibernate確實與列映射:獲取表達式參數名稱

地圖(X => x.Name)

從此,我需要的 「名稱」。

我該怎麼做?

我可以這樣得到x

Expression<Func<User, object>> exp = x => x.Id; 
exp.Parameters[0].Name; 

但是我沒能獲得 「姓名」。請注意,我沒有任何T可以調用的實例。 由於

回答

7
(expr.Body as MemberExpression).Member.Name 

作爲表達式返回object,身體將被包裹在一個轉換表達。

以下應該工作。

((expr.Body as UnaryExpression).Operand as MemberExpression).Member.Name 
+0

(expr.Body as MemberExpression)返回null。 – alexn 2010-09-09 12:47:32

+0

我看到你更新了這個問題。當你返回對象時,將會有一個包裝正文的Convert表達式,將更新答案。 – leppie 2010-09-09 12:51:06

+0

你是我的上帝,謝謝你! – alexn 2010-09-09 12:54:22