using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace BaseDomain.Results { public class Result : Result { private readonly TValue _value; protected Result(TValue value, bool isSuccess, Error error) : base(isSuccess, error) { _value = value; } protected Result(TValue value) : base(true, Error.None) { _value = value; } public TValue Value => IsSuccess ? _value : throw new InvalidOperationException("O valor náo pode ser processado!"); public static implicit operator Result(TValue? value) => Create(value); public static Result Success(TValue value) => new(value); public static Result Create(TValue value) { return new Result(value, true, Error.None); } public static Result Failure(string v) { return new Result(default, false, new Error(ErrorTypeEnum.Failure, v)); } } }