Result.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using Quadarax.Foundation.Core.Value.Extensions;
  2. namespace Quadarax.Foundation.Core.Data
  3. {
  4. public class Result : IResult
  5. {
  6. #region *** Properties ***
  7. public bool IsSuccess { get; protected set; }
  8. public IEnumerable<IError> Errors => _errors;
  9. public static IResult Ok => new Result();
  10. public static IResult Fail => new Result(false, new List<IError> { new Error("Operation failed", 0, ErrorLevelEnum.Error) });
  11. #endregion
  12. #region *** Private Fields ***
  13. private readonly IList<IError> _errors = new List<IError>();
  14. #endregion
  15. #region *** Constructors ***
  16. public Result() : this(true, null)
  17. {
  18. }
  19. public Result(IEnumerable<IError> errors) : this(false, errors)
  20. {
  21. }
  22. public Result(bool isSuccess, IEnumerable<IError>? errors)
  23. {
  24. errors ??= new List<IError>();
  25. IsSuccess = isSuccess;
  26. _errors.AddRange(errors);
  27. }
  28. #endregion
  29. #region *** Operations ***
  30. public void SetSuccess(bool isSuccess)
  31. {
  32. IsSuccess = isSuccess;
  33. }
  34. public void AddError(IError error)
  35. {
  36. if (error == null)
  37. throw new ArgumentNullException(nameof(error));
  38. _errors.Add(error);
  39. }
  40. public void ClearErrors()
  41. {
  42. _errors.Clear();
  43. }
  44. public object? GetValue()
  45. {
  46. return null;
  47. }
  48. #endregion
  49. }
  50. }