Exemplo n.º 1
0
        private void ProcessOutputs(WorkflowInstance workflow, WorkflowStep step, IStepBody body, IStepExecutionContext context)
        {
            foreach (var output in step.Outputs)
            {
                var resolvedValue = output.Source.Compile().DynamicInvoke(body);
                var data          = workflow.Data;
                var setter        = ExpressionHelpers.CreateSetter(output.Target);
                var targetType    = setter.Parameters.Last().Type;

                var convertedValue = resolvedValue;
                // We need to make sure the resolvedValue is of the correct type.
                // However if the targetType is object we don't need to do anything and in some cases Convert.ChangeType will throw.
                if (targetType != typeof(object))
                {
                    convertedValue = Convert.ChangeType(resolvedValue, targetType);
                }

                if (setter.Parameters.Count == 2)
                {
                    setter.Compile().DynamicInvoke(data, convertedValue);
                }
                else
                {
                    setter.Compile().DynamicInvoke(data, context, convertedValue);
                }
            }
        }
Exemplo n.º 2
0
        private void ProcessOutputs(WorkflowInstance workflow, WorkflowStep step, IStepBody body, IStepExecutionContext context)
        {
            foreach (var output in step.Outputs)
            {
                var resolvedValue  = output.Source.Compile().DynamicInvoke(body);
                var data           = workflow.Data;
                var setter         = ExpressionHelpers.CreateSetter(output.Target);
                var convertedValue = Convert.ChangeType(resolvedValue, setter.Parameters.Last().Type);

                if (setter.Parameters.Count == 2)
                {
                    setter.Compile().DynamicInvoke(data, convertedValue);
                }
                else
                {
                    setter.Compile().DynamicInvoke(data, context, convertedValue);
                }
            }
        }