在ConditionalExpression上设置IfTrue属性

时间:2013-02-07 13:53:19

标签: .net expression

有没有办法在初始工厂方法之外设置.NET(4.0及更高版本)中的ConditionalExpression的IfTrue属性?

我的目标是拥有一个通用的SafeAction类,以便在执行后续操作(IfTrue)之前检查谓词,但是可以单独设置替代操作(IfFalse)。

我想我可以使用自己的工厂方法以我需要的方式生成ConditionalExpression对象。我只是认为这些属性(IfTrue,IfFalse,Test)只是委托,可以在ConditionalExpression对象的整个生命周期中重置。

1 个答案:

答案 0 :(得分:0)

不,那是不可能的。你必须为此编写自己的方法。

您可以为此编写流畅的扩展方法:

public static ConditionalExpression WithTrue(this ConditionalExpression item,
                                             Expression ifTrue)
{
    return Expression.Condition(item.Test, ifTrue, item.IfFalse, item.Type);
}