Jarstat
30 строк · 877.0 Байт
1using System.Text.Json.Serialization;2
3namespace Jarstat.Domain.Shared;4
5public class Result<T>6{
7[JsonConstructor]8public Result(T? value, bool isSuccess, Error error)9{10if (isSuccess && error != Error.None)11throw new InvalidOperationException();12
13if (!isSuccess && error == Error.None)14throw new InvalidOperationException();15
16IsSuccess = isSuccess;17Error = error;18Value = value;19}20
21public T? Value { get; private set; }22public bool IsSuccess { get; }23public bool IsFailure => !IsSuccess;24public Error Error { get; }25
26public static implicit operator Result<T>(T value) => Success(value);27
28public static Result<T> Success(T value) => new Result<T>(value, true, Error.None);29public static Result<T> Failure(Error error) => new Result<T>(default(T), false, error);30}
31