2009-05-04 61 views
4

給定一個Lambda表達式的值:如何獲得的LAMBDA MemberExpression

Define(Expression<Func<T, int>> property) 

和使用,如:

Define(x => x.Collection.Count) 

什麼是獲得計數的值的最佳方法是什麼?是否有表達式樹的簡單方法,或者我應該使用反射來解析樹來獲取PropertyInfo和GetValue()?

回答

4

可以使用以下方法來獲得對應的拉姆達的委託:

var propDelegate = property.Compile(); 
var count = propDelegate(...); 

propDelegate將是一個Func<T, int>,並且你可以通過在T類型

+0

由於所需的對象調用它丹尼斯,那有效。給定原始示例的工作代碼:var propDelegate = property.Compile(); var count = propDelegate.DynamicInvoke(new object [] {instance}); – TechnoAg 2009-05-05 21:05:55