public static OperationResult Require(this OperationResult currentOperationResult, Predicate condition, Func <IOperationError> errorBuilder) => currentOperationResult .DoWhen(() => !condition.AssertNotNull(nameof(condition)) .Invoke(), () => OperationResult.FromError( errorBuilder.AssertNotNull(nameof(errorBuilder)) .Invoke()));
public static OperationResult <T> Require <T>(this OperationResult <T> currentOperationResult, Predicate <OperationResult <T> > condition, Func <OperationResult <T>, IOperationError> errorBuilder) => currentOperationResult .DoWhen(x => !condition.AssertNotNull(nameof(condition)) .Invoke(x), x => OperationResult <T> .FromError( errorBuilder.AssertNotNull(nameof(errorBuilder)) .Invoke(x)));
public static OperationResult DoOnSuccess(this OperationResult primaryOperationResult, Func <OperationResult> secondaryOperation) => primaryOperationResult .DoWhen(x => x.IsSuccess, secondaryOperation);
public static OperationResult <TPrimary> DoOnSuccess <TPrimary, TSecondary>(this OperationResult <TPrimary> primaryOperationResult, Func <TPrimary, OperationResult <TSecondary> > secondaryOperation) => primaryOperationResult .DoWhen(x => x.IsSuccess, x => secondaryOperation.AssertNotNull(nameof(secondaryOperation)) .Invoke(x.Value));
public static OperationResult <TPrimary> DoOnSuccess <TPrimary, TSecondary>(this OperationResult <TPrimary> primaryOperationResult, Func <OperationResult <TSecondary> > secondaryOperation) => primaryOperationResult .DoWhen(x => x.IsSuccess, secondaryOperation);
public static OperationResult <TPrimary> DoOnSuccessWhen <TPrimary, TSecondary>(this OperationResult <TPrimary> primaryOperationResult, Predicate <TPrimary> condition, Func <OperationResult <TSecondary> > secondaryOperation) => primaryOperationResult .DoWhen(x => x.IsSuccess && condition.AssertNotNull(nameof(condition)) .Invoke(x.Value), secondaryOperation);
public static OperationResult DoOnSuccessWhen(this OperationResult primaryOperationResult, bool condition, Func <OperationResult> secondaryOperation) => primaryOperationResult .DoWhen(x => x.IsSuccess && condition, secondaryOperation);
public static OperationResult DoOnSuccessWhen(this OperationResult primaryOperationResult, Predicate condition, Func <OperationResult> secondaryOperation) => primaryOperationResult .DoWhen(x => x.IsSuccess && condition.AssertNotNull(nameof(condition)) .Invoke(), secondaryOperation);
public static OperationResult <T> Require <T>(this OperationResult <T> currentOperationResult, bool condition, Func <IOperationError> errorBuilder) => currentOperationResult .DoWhen(!condition, () => OperationResult <T> .FromError( errorBuilder.AssertNotNull(nameof(errorBuilder)) .Invoke()));
public static OperationResult Require(this OperationResult currentOperationResult, bool condition, Func <OperationResult, IOperationError> errorBuilder) => currentOperationResult .DoWhen(!condition, x => OperationResult.FromError( errorBuilder.AssertNotNull(nameof(errorBuilder)) .Invoke(x)));
public static OperationResult DoOnFailure(this OperationResult primaryOperationResult, Func <OperationResult> secondaryOperation) => primaryOperationResult .DoWhen(x => x.IsFailure, secondaryOperation);
public static OperationResult <TPrimary> DoOnFailure <TPrimary, TSecondary>(this OperationResult <TPrimary> primaryOperationResult, Func <IOperationError, OperationResult <TSecondary> > secondaryOperation) => primaryOperationResult .DoWhen(x => x.IsFailure, x => secondaryOperation.AssertNotNull(nameof(secondaryOperation)) .Invoke(x.Error));
public static OperationResult <TPrimary> DoOnFailure <TPrimary, TSecondary>(this OperationResult <TPrimary> primaryOperationResult, Func <OperationResult <TSecondary> > secondaryOperation) => primaryOperationResult .DoWhen(x => x.IsFailure, secondaryOperation);