我有接受LambdaExpression作为参数
的方法 public void SomeMethod(Expression<Func<SomeObject, bool>> predicate)
{ }
在这个方法中我想从表达式Body中提取成员和参数值。这有可能吗?如何实现?
可以像这样调用方法:
SomeMethod(t=> t.Id == 3 && t.Name=="Name");
或
SomeMethod(t=> t.Id.Equals(3));
或
SomeMethod(t=> t.Id > 3 || t.Id = 1);
等。你明白了。
答案 0 :(得分:2)
您正在寻找的解决方案称为Expression Tree Visitor。 通过使用它,你可以通过lambda表达式成员和参数。
此walkthrough也许有用,它包含lambda表达式部分赋值器的代码,以防lambda表达式中的参数不是常量