如何获取Lambda表达式的成员表达式的值

4

给定一个Lambda表达式:

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

并且可以像这样使用:

Define(x => x.Collection.Count)

什么是获取Count值的最佳方法?是否可以通过表达式树轻松实现,还是应该使用反射来解析树以获取PropertyInfo和GetValue()?
1个回答

4
您可以使用以下内容来获取与您的lambda对应的委托:
var propDelegate = property.Compile();
var count = propDelegate(...);

propDelegate将是一个Func<T, int>,您可以通过传递所需的T类型对象来调用它。


谢谢Denis,那个方法可行。以下是工作代码,给出了原始示例:var propDelegate = property.Compile(); var count= propDelegate.DynamicInvoke(new object[] { instance } ); - TechnoAg
4
实例是从哪里来的? - Rookian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接