Jarstat

Форк
0
65 строк · 1.6 Кб
1
using Jarstat.Domain.Primitives;
2
using System.Text.Json.Serialization;
3

4
namespace Jarstat.Domain.Shared;
5

6
public class Error : IEquatable<Error>
7
{
8
    public static readonly Error None = new Error(string.Empty, string.Empty);
9

10
    [JsonConstructor]
11
    public Error(string code, string message, params string[] parameters)
12
    {
13
        Code = code;
14
        Message = message;
15
        Parameters = parameters;
16
    }
17

18
    public string Code { get; }
19
    public string Message { get; }
20
    public string[] Parameters { get; private set; }
21

22
    public Error WithParameters(params string[] parameters) => new Error(Code, Message, parameters);
23

24
    public static implicit operator string(Error error) => error.Code;
25

26
    public static bool operator ==(Error? first, Error? second)
27
    {
28
        return first is not null && second is not null && first.Equals(second);
29
    }
30

31
    public static bool operator !=(Error? first, Error? second)
32
    {
33
        return !(first == second);
34
    }
35

36
    public bool Equals(Error? other)
37
    {
38
        if (other is null)
39
            return false;
40

41
        if (other.GetType() != GetType())
42
            return false;
43

44
        return other.Code == Code && other.Message == Message;
45
    }
46

47
    public override bool Equals(object? obj)
48
    {
49
        if (obj is null)
50
            return false;
51

52
        if (obj.GetType() != GetType())
53
            return false;
54

55
        if (obj is not Error error)
56
            return false;
57

58
        return error.Code == Code && error.Message == Message;
59
    }
60

61
    public override int GetHashCode()
62
    {
63
        return Code.GetHashCode() * 79;
64
    }
65
}
66

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

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

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

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