Преобразуйте enum в класс Enumeration и добавьте бизнес-логику - PullRequest
0 голосов
/ 06 мая 2020

Я начал с enum, но теперь думаю, что вместо enum должен быть класс Enumeration с бизнес-логами c.

Вот мой пример перечисления:

internal enum Rule
    {
        None = 0,

        CompensationIsZero = 1,

        CompensationLessThanDemand = 2,

        CompensationBetweenZeroAndDemand = 3,

        CompensationEqualsDemand = 4,

        CompensationLessOrEqualsDemand = 5
    }

Мне нужен бизнес-лог c вроде этого (на основе значения правила мне нужно создать несколько проверок):

    public bool IsValid(decimal compensation, decimal demand, int rule) {
            if (rule == 0) return true;
            if (rule == 1) return compensation == 0;
            ...
            if (rule == 5) return compensation <= demand;
    }

Я подумал, что мне нужно преобразовать enum в Enumeration class а может есть подход получше?

    public class Rule : Enumeration
    {
            public static readonly Rule None = new Rule (0, "None");
            public static readonly Rule CompensationIsZero  = new Rule (1, "CompensationIsZero ");
            .... 

           public Rule(int id, string name)
            : base(id, name)
           { }

            public bool IsValid(decimal compensation, decimal demand, int rule) {
                    if (rule == Rule.None.Id) return true;
                    if (rule == Rule.CompensationIsZero.Id) then return compensation == 0;
                    ...
             }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...