Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Абасс... обсудите рахитекурту

18.05.24 14:15
Re: Абасс... обсудите рахитекурту
 
alex445 патриот
в ответ alex445 18.05.24 14:07, Последний раз изменено 18.05.24 14:16 (alex445)

Сделал с new и отдельным вызовом валидирующего метода ValidateMaxValue для потомка. И ещё вынес валидацию CurrentValue тоже в отдельный метод. Вроде, так лучше


public class Param
{
    double maxValue;
    public double MaxValue
    {
        get => maxValue;
        set => maxValue = ValidateMaxValue(value);
    }

    protected double ValidateMaxValue(double value) => ...
}

public class ParamVolatile : Param
{
    double maxValue;
    public new double MaxValue
    {
        get => maxValue;
        set
        {
            maxValue = ValidateMaxValue(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);
}
 

Перейти на