Я начал с 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;
...
}
}