有没有一种方法可以找到在谓词变量中传递的参数。可以说,我有这种方法;
List<User> GetUsers(Predicate<UserModel> userPredicate)
{
// how to find what values are passed in userPredicate
}
函数调用:
GetUsers(_ => _.Name == "abc");
如何在谓词中将 GetUsers 函数中的Name属性设置为“ abc”?
答案 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;
}
这是一种实现方法,并且必须强制转换这些表达式,因为如果更改表达式主体,它可能会无效。
仅供参考,我完全不会推荐此解决方案来实现您需要做的事情,有更好的设计方法,但是它可以满足您的需求。