public OperationStatus With(OperationStatus operationStatus) { var newFlag = Flag | operationStatus.Flag; newFlag = (this.Failed() || operationStatus.Failed()) ? newFlag.RemoveFlag(OperationStatusFlag.Succeeded) : newFlag; newFlag = newFlag.Succeeded() ? newFlag.RemoveFlag(OperationStatusFlag.BestEffort) : newFlag; var reasons = Reasons.Concat(operationStatus.Reasons); return(new OperationStatus(newFlag, reasons)); }
public OperationStatus With(OperationStatusFlag flag, string reason) { var newFlag = Flag | flag; newFlag = (this.Failed() || flag.Failed()) ? newFlag.RemoveFlag(OperationStatusFlag.Succeeded) : newFlag; newFlag = newFlag.Succeeded() ? newFlag.RemoveFlag(OperationStatusFlag.BestEffort) : newFlag; var reasons = reason == null ? Reasons : Reasons.Concat(reason); return(new OperationStatus(newFlag, reasons)); }