/// <summary>
        /// This changes an Optional ResultOrError into a ResultOrError by setting a Missing value to an error ResultOrError, populating it with a provided error message (if the ResultOrError
        /// is already populated, whether as a Result or an Error) then the instance will be returned unaltered
        /// </summary>
        public static ResultOrError <T> SetErrorIfNoValue <T>(this Optional <ResultOrError <T> > source, NonBlankTrimmedString errorMessage)
        {
            if (errorMessage == null)
            {
                throw new ArgumentNullException(nameof(errorMessage));
            }

            return(source.GetValueOrDefault(ResultOrError <T> .FromError(errorMessage)));
        }
        /// <summary>
        /// Given a ResultOrError of Optional T, return a ResultOrError of T by replacing a Missing T value with an Error ResultOrError of T
        /// </summary>
        public static ResultOrError <T> ReplaceMissingResultWithError <T>(this ResultOrError <Optional <T> > source, NonBlankTrimmedString errorMessageForMissingValue)
        {
            if (source == null)
            {
                throw new ArgumentNullException(nameof(source));
            }
            if (errorMessageForMissingValue == null)
            {
                throw new ArgumentNullException(nameof(errorMessageForMissingValue));
            }

            return(source.Match(
                       handleResult: resultIfAvailable => resultIfAvailable
                       .Map(result => ResultOrError.FromResult(result))
                       .GetValueOrDefault(ResultOrError <T> .FromError(errorMessageForMissingValue)),
                       handleError: errorMessage => ResultOrError <T> .FromError(errorMessage)
                       ));
        }
예제 #3
0
 public static ResultOrError <T> FromResult <T>(T result)
 {
     return(ResultOrError <T> .FromResult(result));
 }