【问题标题】:Pass a local variable to CodeMethodInvokeExpression in workflow foundation将局部变量传递给工作流基础中的 CodeMethodInvokeExpression
【发布时间】:2014-06-23 11:52:51
【问题描述】:

我有一个使用工作流基础的规则验证器。当我的规则失败时,我需要使用本地 Error 类对象调用 HandleError 函数。但我找不到传递此对象的方法。

当我将 Error 类声明为公共变量时,它工作正常

  //Rule then action
    private void ThenAction()
    {
        //Local error object.I need to pass this variable to HandleErrorFunction
        ErrorData error = new ErrorData();
        CodeMethodInvokeExpression codeMethodInvokeExpression = new CodeMethodInvokeExpression(new CodeThisReferenceExpression(),
                            "HandleError");
        CodeDirectionExpression param1 = new CodeDirectionExpression(FieldDirection.In,
                                                                                 new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), "error"));
        codeMethodInvokeExpression.Parameters.Add(new CodePrimitiveExpression("Error for " + stateMachineType.stateMachineId));
        codeMethodInvokeExpression.Parameters.Add(param1);
    }

    //Error handling function
    private void HandleError(ErrorData newError)
    {
        //Handle new error
    }

【问题讨论】:

    标签: c# workflow-foundation rule-engine business-rules


    【解决方案1】:

    将局部变量作为 CodePrimitiveExpression 传递

    codeMethodInvokeExpression.Parameters.Add(new CodePrimitiveExpression(error));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-07
      • 1970-01-01
      • 1970-01-01
      • 2018-09-02
      • 2022-12-22
      • 1970-01-01
      • 2011-09-10
      相关资源
      最近更新 更多