public object Invoke(IOperationResult result) { var outType = Type.GetType(OutputType, true); try { if (InputType != null) { var inType = Type.GetType(InputType, true); result = OperationResult.Convert(inType, result); } if (MainCallback != null) { object obj = MainCallback.Invoke(result); if (IsFunc) { result = OperationResult.CreateResult(outType, result.Operation, result.Source, obj, result.OperationContext); } else { result = OperationResult.Convert(outType, result); } } } catch (Exception e) { Tracer.Error(e.Flatten(false)); if (result.Exception != null) { e = new AggregateException(result.Exception, e); } else if (e is OperationCanceledException) { e = null; } if (e == null) { result = OperationResult.CreateCancelResult(outType, result.Operation, result.Source, result.OperationContext); } else { result = OperationResult.CreateErrorResult(outType, result.Operation, result.Source, e, result.OperationContext); } } finally { if (Callbacks != null) { for (int i = 0; i < Callbacks.Count; i++) { ((ISerializableCallback)Callbacks[i]).Invoke(result); } } } return(null); }
internal override IOperationResult <T> InvokeInternal(IOperationResult result) { if (_continuationAction != null) { _continuationAction.Invoke(result); return(OperationResult.Convert <T>(result)); } if (_continuationActionGeneric != null) { IOperationResult <T> genericResult = OperationResult.Convert <T>(result); _continuationActionGeneric.Invoke(genericResult); return(genericResult); } if (_continuationFunction != null) { return(OperationResult.CreateResult(result.Operation, result.Source, _continuationFunction.Invoke(result), result.OperationContext)); } return(OperationResult.CreateResult(result.Operation, result.Source, _continuationFunctionGeneric.Invoke(OperationResult.Convert <TIn>(result)), result.OperationContext)); }
internal virtual IOperationResult <TResult> InvokeInternal(IOperationResult result) { return(OperationResult.Convert <TResult>(result)); }