查找谓词参数

时间:2019-02-01 03:26:50

标签: c#

有没有一种方法可以找到在谓词变量中传递的参数。可以说,我有这种方法;

  List<User> GetUsers(Predicate<UserModel> userPredicate)
    {
      // how to find what values are passed in userPredicate
    }

函数调用:

GetUsers(_ => _.Name == "abc");

如何在谓词中将 GetUsers 函数中的Name属性设置为“ abc”?

1 个答案:

答案 0 :(得分:0)

public static void GetUsers(Expression<Func<UserModel, bool>> predicate)
{
    var expr = predicate.Body as BinaryExpression;
    var value = expr.Right as ConstantExpression;
    // this will be the value of that predicate Func
    var yourvalue = value.Value;
}

这是一种实现方法,并且必须强制转换这些表达式,因为如果更改表达式主体,它可能会无效。

仅供参考,我完全不会推荐此解决方案来实现您需要做的事情,有更好的设计方法,但是它可以满足您的需求。