$mermaidjs
Clean Architecture Demo
Loading...
Searching...
No Matches
Result.cs
Go to the documentation of this file.
1// TaskManagement.Domain/Shared/Result.cs
3
4#pragma warning disable CS1570 // XML comment has badly formed XML
38#pragma warning restore CS1570 // XML comment has badly formed XML
39public class Result
40{
41 public bool IsSuccess {
42 get;
43 }
44 public bool IsFailure => !IsSuccess;
45 public IReadOnlyList<string> Errors {
46 get;
47 }
48 protected Result(bool isSuccess, IEnumerable<string>? errors = null)
49 {
50 IsSuccess = isSuccess;
51 Errors = errors?.ToList().AsReadOnly() ?? new List<string>().AsReadOnly();
52 }
53 public static Result Success() => new(true);
54 public static Result Failure(string error) => new(false, new[] { error });
55 public static Result Failure(IEnumerable<string> errors) => new(false, errors);
56 public static Result<T> Success<T>(T value) => new(value);
57 public static Result<T> Failure<T>(string error) => new(new[] { error });
58 public static Result<T> Failure<T>(IEnumerable<string> errors) => new(errors);
59}
60
61#pragma warning disable CS1570 // XML comment has badly formed XML
69#pragma warning restore CS1570 // XML comment has badly formed XML
70public class Result<T> : Result
71{
72 public T? Value {
73 get;
74 }
75 internal Result(T value) : base(true) => Value = value;
76 internal Result(IEnumerable<string> errors) : base(false, errors) => Value = default;
77 public TResult Match<TResult>(Func<T, TResult> onSuccess, Func<IReadOnlyList<string>, TResult> onFailure)
78 {
79 ArgumentNullException.ThrowIfNull(onSuccess);
80 ArgumentNullException.ThrowIfNull(onFailure);
81
82 return IsSuccess ? onSuccess(Value!) : onFailure(Errors);
83 }
84}
Result es un tipo de unión discriminada que implementa el patrón Result para manejo de errores.
Definition Result.cs:71
IReadOnlyList< string > Errors
Definition Result.cs:45
Result(bool isSuccess, IEnumerable< string >? errors=null)
Definition Result.cs:48
Result(T value) Result(IEnumerable< string > errors) TResult Match< TResult >(Func< T, TResult > onSuccess, Func< IReadOnlyList< string >, TResult > onFailure)
Definition Result.cs:77
static Result< T > Success< T >(T value)
static Result< T > Failure< T >(string error)
static Result Failure(string error)
static Result Failure(IEnumerable< string > errors)