2015-12-29 35 views
2

假設這個表達式:獲取屬性的名稱從NewExpression成員構成的鏈

Expression<Func<DateTime, dynamic>> exp = dt => new { dt.Second, dt.Hour, dt.Date.Day }; 

我需要獲取以下信息:"Second", "Hour", "Date.Day"

最好的我已經能夠做到的是以下幾點:

var body = exp.Body as NewExpression; 
foreach(var member in body.Members) 
    member.Name().Dump(); 

但我只得到:"Second", "Hour", "Day"


這有點類似於this question但我在這裏處理NewExpression。

回答

2

也許你可以試試Arguments而不是Members

var body = exp.Body as NewExpression; 
foreach (var member in body.Arguments) 
{ 
    Console.WriteLine(member); 
} 

輸出是:

dt.Second 
dt.Hour 
dt.Date.Day