diff --git a/src/AStar.Dev.Functional.Extensions/AStar.Dev.Functional.Extensions.csproj b/src/AStar.Dev.Functional.Extensions/AStar.Dev.Functional.Extensions.csproj index 66004bf..6976ef9 100644 --- a/src/AStar.Dev.Functional.Extensions/AStar.Dev.Functional.Extensions.csproj +++ b/src/AStar.Dev.Functional.Extensions/AStar.Dev.Functional.Extensions.csproj @@ -9,7 +9,7 @@ true snupkg AStar.Dev.Functional.Extensions - 0.4.0 + 0.4.2 Readme.md AStar Development, Jason Barden AStar Development @@ -26,7 +26,7 @@ Readme.md AStar.Dev.Functional.Extensions AStar Development 2025 - Add an extension method to convert a failures exception message to an instance of the ErrorResponse class. + Add a pair of additional extension methods for MatchAsync to handle additional scenarios. astar.png diff --git a/src/AStar.Dev.Functional.Extensions/Result.cs b/src/AStar.Dev.Functional.Extensions/Result.cs index 145bc90..31d75ae 100644 --- a/src/AStar.Dev.Functional.Extensions/Result.cs +++ b/src/AStar.Dev.Functional.Extensions/Result.cs @@ -89,6 +89,7 @@ public async Task MatchAsync( Error err => await onFailure(err.Reason), _ => throw new InvalidOperationException($"Unrecognized result type: {GetType().Name}") }; + #pragma warning restore S3060 /// diff --git a/src/AStar.Dev.Functional.Extensions/ResultExtensions.cs b/src/AStar.Dev.Functional.Extensions/ResultExtensions.cs index ea99a3c..0bd1659 100644 --- a/src/AStar.Dev.Functional.Extensions/ResultExtensions.cs +++ b/src/AStar.Dev.Functional.Extensions/ResultExtensions.cs @@ -10,6 +10,44 @@ namespace AStar.Dev.Functional.Extensions; [SuppressMessage("ReSharper", "GrammarMistakeInComment")] public static class ResultExtensions { + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + public static async Task MatchAsync( + this Task> resultTask, + Func> onSuccess, + Func> onFailure) + { + var result = await resultTask; + return await result.Match(onSuccess, onFailure); + } + + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + public static async Task MatchAsync( + this Task> resultTask, + Func onSuccess, + Func onFailure) + { + var result = await resultTask; + return result.Match(onSuccess, onFailure); + } + /// /// Transforms the success value of a using the specified mapping function. /// @@ -24,7 +62,7 @@ public static class ResultExtensions /// public static Result Map( this Result result, - Func map) => + Func map) => result.Match>( ok => new Result.Ok(map(ok)), err => new Result.Error(err)