【发布时间】:2018-04-09 18:18:01
【问题描述】:
我有下面给出Expression<Func<T, Result<T>>> 类型的方法。
public Expression<Func<T, Result<T>>> GetExpression<T>()
{
//Do something to retrun expression
}
public class Result<T>
{
public bool IsSuccess { get; set; }
public string Message { get; set; }
public Result<T> ChildResult { get; set; }
}
现在我有另一个方法,如下所示,我想访问 GetExpression 方法的返回结果。
public void UseExpression<T>()
{
var expression = GetExpression<T>();
//I want to get the expression for return Result<T> from above method call and get access to it's properties like IsSuccess which can itself be a binary expression
}
我想从上面的方法调用中获取返回结果的表达式,并访问它的属性,例如 IsSuccess,它本身可以是一个二进制表达式。所有这些都无需编译表达式。
最终目标: 让我们将其视为方法调用,方法 M1 返回结果 R1,方法 M2 使用此结果 R1,它(M2)必须创建自己的结果 R2,但方法 M2 必须使用其他布尔表达式对 R1 的 IsSuccess 属性执行 Epxression.Or() 以创建 R2,因此我们需要表达式。所以我们只需要从 M2 中的 R1 获取 IsSuccess 属性,然后使用它。
请建议我如何实现它?
提前致谢。
【问题讨论】:
-
如果你想得到一个表达式的执行结果,你必须编译它。
-
请尝试解释您为什么要这样做。最终目标是什么?
-
是的,在某些时候,我会编译表达式,但在 UseExpression 方法中,我正在创建新的表达式,它不会使用已编译的表达式,所以这一切都必须是表达式,最后我'将进行编译。
-
@Daniel 更新问题。
标签: c# expression expression-trees