Class ResultExtensions
Extensions for Result, including async operations on Task of Result.
public static class ResultExtensions
- Inheritance
-
ResultExtensions
- Inherited Members
Methods
BindAsync<TSource, TDestination>(Task<Result<TSource>>, Func<TSource, Task<Result<TDestination>>>)
Monadic bind operation with an asynchronous bind function.
public static Task<Result<TDestination>> BindAsync<TSource, TDestination>(this Task<Result<TSource>> task, Func<TSource, Task<Result<TDestination>>> bind)
Parameters
taskTask<Result<TSource>>Asynchronous result.
bindFunc<TSource, Task<Result<TDestination>>>Asynchronous bind operation.
Returns
Type Parameters
TSourceSource type.
TDestinationReturn type.
Examples
Task<Result<int>> asyncUserId = GetUserIdAsync();
Result<User> user = await asyncUserId.BindAsync(id => FetchUserAsync(id));
Bind<TSource, TDestination>(Task<Result<TSource>>, Func<TSource, Result<TDestination>>)
Monadic bind operation on an asynchronous Result.
public static Task<Result<TDestination>> Bind<TSource, TDestination>(this Task<Result<TSource>> task, Func<TSource, Result<TDestination>> bind)
Parameters
taskTask<Result<TSource>>Asynchronous result.
bindFunc<TSource, Result<TDestination>>Bind operation.
Returns
Type Parameters
TSourceSource type.
TDestinationReturn type.
Examples
Task<Result<int>> asyncResult = GetResultAsync();
Result<string> bound = await asyncResult.Bind(value => Result<string>.FromSuccess(value.ToString()));
DoWhenFailure<TSource>(Task<Result<TSource>>, Action<IResultFailure>)
Executes an operation if the asynchronous Result is in Failure state.
public static Task<Result<TSource>> DoWhenFailure<TSource>(this Task<Result<TSource>> task, Action<IResultFailure> failureOperation)
Parameters
taskTask<Result<TSource>>Asynchronous result.
failureOperationAction<IResultFailure>Failure operation.
Returns
Type Parameters
TSourceSource type.
Examples
Task<Result<string>> asyncResult = GetResultAsync();
await asyncResult.DoWhenFailure(error => logger.LogError(error.GetFailureMessage()));
DoWhenSuccess<TSource>(Task<Result<TSource>>, Action<TSource>)
Executes an operation if the asynchronous Result is in Success state.
public static Task<Result<TSource>> DoWhenSuccess<TSource>(this Task<Result<TSource>> task, Action<TSource> successOperation)
Parameters
Returns
Type Parameters
TSourceSource type.
Examples
Task<Result<string>> asyncResult = GetResultAsync();
await asyncResult.DoWhenSuccess(value => Console.WriteLine($"Got: {value}"));
Do<TSource>(Task<Result<TSource>>, Action<TSource>, Action<IResultFailure>)
Executes operations depending on the current state of an asynchronous Result.
public static Task<Result<TSource>> Do<TSource>(this Task<Result<TSource>> task, Action<TSource> successOperation, Action<IResultFailure> failureOperation)
Parameters
taskTask<Result<TSource>>Asynchronous result.
successOperationAction<TSource>Success operation.
failureOperationAction<IResultFailure>Failure operation.
Returns
Type Parameters
TSourceSource type.
Examples
Task<Result<string>> asyncResult = GetResultAsync();
await asyncResult.Do(
successOperation: value => Console.WriteLine($"Success: {value}"),
failureOperation: error => Console.WriteLine($"Error: {error.GetFailureMessage()}")
);
IfFailure<TSource>(Task<Result<TSource>>, TSource)
Returns the default value if the asynchronous Result is in the Failure state, the success value otherwise.
public static Task<TSource> IfFailure<TSource>(this Task<Result<TSource>> task, TSource defaultValue)
Parameters
taskTask<Result<TSource>>Asynchronous result.
defaultValueTSourceValue to return if in the Failure state.
Returns
- Task<TSource>
The default value if the Result is in the Failure state, the success value otherwise.
Type Parameters
TSourceSource type.
Examples
Task<Result<int>> asyncResult = GetResultAsync();
int value = await asyncResult.IfFailure(0); // Returns 0 if Failure
IfSuccessAsync<T>(Task<Result<T>>, Func<T, Task>)
Invokes the asynchronous action if the Result is in the Success state, otherwise nothing happens.
public static Task<Result<T>> IfSuccessAsync<T>(this Task<Result<T>> task, Func<T, Task> action)
Parameters
Returns
Type Parameters
TThe source type.
Examples
Task<Result<string>> asyncResult = GetResultAsync();
await asyncResult.IfSuccessAsync(async value => await SaveAsync(value));
IfSuccess<T>(Task<Result<T>>, Action<T>)
Invokes the action if the asynchronous Result is in the Success state, otherwise nothing happens.
public static Task<Result<T>> IfSuccess<T>(this Task<Result<T>> task, Action<T> action)
Parameters
Returns
Type Parameters
TThe source type.
Examples
Task<Result<string>> asyncResult = GetResultAsync();
await asyncResult.IfSuccess(value => Console.WriteLine($"Got: {value}"));
MapAsync<TSource, TDestination>(Task<Result<TSource>>, Func<TSource, Task<TDestination>>)
Projects from one value to another using an asynchronous projection function.
public static Task<Result<TDestination>> MapAsync<TSource, TDestination>(this Task<Result<TSource>> task, Func<TSource, Task<TDestination>> map)
Parameters
taskTask<Result<TSource>>Asynchronous result.
mapFunc<TSource, Task<TDestination>>Asynchronous projection function.
Returns
Type Parameters
TSourceSource type.
TDestinationResulting functor value type.
Examples
Task<Result<int>> asyncResult = GetIdAsync();
Result<User> user = await asyncResult.MapAsync(id => FetchUserAsync(id));
Map<TSource, TDestination>(Task<Result<TSource>>, Func<TSource, TDestination>)
Projects from one value to another on an asynchronous Result.
public static Task<Result<TDestination>> Map<TSource, TDestination>(this Task<Result<TSource>> task, Func<TSource, TDestination> map)
Parameters
taskTask<Result<TSource>>Asynchronous result.
mapFunc<TSource, TDestination>Projection function.
Returns
Type Parameters
TSourceSource type.
TDestinationResulting functor value type.
Examples
Task<Result<int>> asyncResult = GetResultAsync();
Result<string> mapped = await asyncResult.Map(value => value.ToString());
Match<TSource, TDestination>(Task<Result<TSource>>, Func<TSource, TDestination>, Func<IResultFailure, TDestination>)
Match the two states of an asynchronous Result and return a non-null TDestination.
public static Task<TDestination> Match<TSource, TDestination>(this Task<Result<TSource>> task, Func<TSource, TDestination> successOperation, Func<IResultFailure, TDestination> failureOperation)
Parameters
taskTask<Result<TSource>>Asynchronous result.
successOperationFunc<TSource, TDestination>Success match operation.
failureOperationFunc<IResultFailure, TDestination>Failure match operation.
Returns
- Task<TDestination>
A non-null TDestination.
Type Parameters
TSourceSource type.
TDestinationReturn type.
Examples
Task<Result<int>> asyncResult = GetResultAsync();
string message = await asyncResult.Match(
successOperation: value => $"Success: {value}",
failureOperation: error => $"Error: {error.GetFailureMessage()}"
);