ResultExtensions.cs 832 B

123456789101112131415161718192021222324
  1. using SharedKernel.Results;
  2. namespace Web.Api.Extensions;
  3. public static class ResultExtensions
  4. {
  5. // Result 객체에 값이 없는 경우, onSuccess는 매개변수 없이 호출되고, onFailure는 Result 객체를 매개변수로 받아 호출됩니다.
  6. public static TOut Match<TOut>(
  7. this Result result,
  8. Func<TOut> onSuccess,
  9. Func<Result, TOut> onFailure
  10. ) {
  11. return result.IsSuccess ? onSuccess() : onFailure(result);
  12. }
  13. // Result<TIn> 객체에 값이 있는 경우, onSuccess는 매개변수로 TIn 값을 받아 호출되고, onFailure는 Result<TIn> 객체를 매개변수로 받아 호출됩니다.
  14. public static TOut Match<TIn, TOut>(
  15. this Result<TIn> result,
  16. Func<TIn, TOut> onSuccess,
  17. Func<Result<TIn>, TOut> onFailure
  18. ) {
  19. return result.IsSuccess ? onSuccess(result.Value) : onFailure(result);
  20. }
  21. }