Вход на сайт
Абасс... обсудите рахитекурту
3762 просмотров
Перейти к просмотру всей ветки
в ответ Программист 21.05.24 13:51, Последний раз изменено 21.05.24 14:51 (alex445)
Я также не совсем понимаю, каким образом тут будет установлено значение maxValue
public class Param { double maxValue; public virtual double MaxValue { get => return maxValue; set => maxValue = ValidateMaxValue(); } protected double virtual ValidateMaxValue() => ... }если value из сеттера не передается :)
Это я опечатался - надо передать значение из сеттера. Ещё надо присвоить currentValue при валидации MaxValue в классе ParamVolatile, затем там же вернуть отвалидированное значение MaxValue. И убрать virtual у свойства MaxValue. И изменить метод ValidateCurrentValue, чтобы он мог принимать значение MaxValue. Мдаа, много изменить надо, чтобы ваш подход применить. Вот так будет правильнее
public class Param { double maxValue; public double MaxValue { get => return maxValue; set => maxValue = ValidateMaxValue(value); } protected virtual double ValidateMaxValue(double value) => ... } public class ParamVolatile : Param { double currentValue; public double CurrentValue { get => return currentValue; set => currentValue = ValidateCurrentValue(value); } protected override double ValidateMaxValue(double maxValue) { var newMaxValue = base.ValidateMaxValue(maxValue); currentValue = ValidateCurrentValue(CurrentValue, newMaxValue); return newMaxValue; } double ValidateCurrentValue(double currentValue, double maxValue) => ... }