Login
Абасс... обсудите рахитекурту
3762 просмотров
Перейти к просмотру всей ветки
in Antwort AlexNek 18.05.24 14:15, Zuletzt geändert 18.05.24 14:29 (alex445)
Что значит "вся логика в одном объекте"?Ну вот же описан объект в нём и должно быть всё
public double CurrentValue { get; set; } public double MaxValue { get; set; }
Нет, базовый класс тоже вполне самодостаточный - можно создавать его объекты отдельно. Но часть его функциональности я бы хотел иметь в потомке. Гляньте мой последний вариант. Мне в нём не нравится только то, что свойство MaxValue в потомке почти полностью повторяет родителя. Может, вернуться к virtual-override и вызову базового сеттера, оставив лишь валидирующие функции?
public class Param { double maxValue; public virtual double MaxValue { get => maxValue; set => maxValue = ValidateMaxValue(value); } double ValidateMaxValue(double value) => ... } public class ParamVolatile : Param { public override double MaxValue { get => base.MaxValue; set { base.MaxValue = value; currentValue = ValidateCurrentValue(CurrentValue, 0, MaxValue); } } double currentValue; public double CurrentValue { get => currentValue; set => currentValue = ValidateCurrentValue(CurrentValue, 0, MaxValue); } ValidateCurrentValue(double value, double min, double max) => Math.Clamp(value, min, max); }