2009-05-04 84 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

相关问题