public static ResultExecutor Create(IModuleBuilder moduleBuilder, ICommandBuilder commandBuilder) { var(body, instanceParameter, argsParameter) = ExecutorUtils.GetBasicExpressions(moduleBuilder, commandBuilder); var callback = ExecutorUtils.CreateCallbackForTaskResult(body, instanceParameter, argsParameter); return(new ResultExecutor(callback)); }
public static ObjectTaskExecutor Create(IModuleBuilder moduleBuilder, ICommandBuilder commandBuilder) { var(body, instanceParameter, argsParameter) = ExecutorUtils.GetBasicExpressions(moduleBuilder, commandBuilder); body = ExecutorUtils.ChangeForObjectTaskResultExpression(body, commandBuilder.AsyncResultType); var callback = ExecutorUtils.CreateCallback(body, instanceParameter, argsParameter); return(new ObjectTaskExecutor(callback)); }
public static VoidTaskExecutor Create(IModuleBuilder moduleBuilder, ICommandBuilder commandBuilder) { var(body, instanceParameter, argsParameter) = ExecutorUtils.GetBasicExpressions(moduleBuilder, commandBuilder); body = ExecutorUtils.AddContinueWithExpression(body); var callback = ExecutorUtils.CreateCallback(body, instanceParameter, argsParameter); return(new VoidTaskExecutor(callback)); }
public static VoidExecutor Create(IModuleBuilder moduleBuilder, ICommandBuilder commandBuilder) { var(body, instanceParameter, argsParameter) = ExecutorUtils.GetBasicExpressions(moduleBuilder, commandBuilder); var resultExpression = Expression.Constant(Task.FromResult(new SuccessResult() as IResult)); body = Expression.Block(body, resultExpression); var callback = ExecutorUtils.CreateCallback(body, instanceParameter, argsParameter); return(new VoidExecutor(callback)); }
public static ObjectExecutor Create(IModuleBuilder moduleBuilder, ICommandBuilder commandBuilder) { var(body, instanceParameter, argsParameter) = ExecutorUtils.GetBasicExpressions(moduleBuilder, commandBuilder); var objectResultCtor = ExecutorUtils.GetObjectResultCtor(); body = Expression.New(objectResultCtor, body); var callback = ExecutorUtils.CreateCallbackForTaskResult(body, instanceParameter, argsParameter); return(new ObjectExecutor(callback)); }