Jarstat

Форк
0
30 строк · 877.0 Байт
1
using System.Text.Json.Serialization;
2

3
namespace Jarstat.Domain.Shared;
4

5
public class Result<T>
6
{
7
    [JsonConstructor]
8
    public Result(T? value, bool isSuccess, Error error)
9
    {
10
        if (isSuccess && error != Error.None)
11
            throw new InvalidOperationException();
12

13
        if (!isSuccess && error == Error.None)
14
            throw new InvalidOperationException(); 
15

16
        IsSuccess = isSuccess;
17
        Error = error;
18
        Value = value;
19
    }
20

21
    public T? Value { get; private set; }
22
    public bool IsSuccess { get; }
23
    public bool IsFailure => !IsSuccess;
24
    public Error Error { get; }
25

26
    public static implicit operator Result<T>(T value) => Success(value);
27

28
    public static Result<T> Success(T value) => new Result<T>(value, true, Error.None);
29
    public static Result<T> Failure(Error error) => new Result<T>(default(T), false, error);
30
}
31

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.