API для установки свойства к одному из фиксированного набора значений - PullRequest
0 голосов
/ 01 ноября 2019

Я разрабатываю программный API для электронного устройства, и одной из функций является установка значений некоторого свойства.

Существует только несколько допустимых значений для любого данного свойства, из которыхОжидается, что пользователь выберет их из ComboBox в графическом интерфейсе.

Класс в настоящее время разработан так:

public class Device
{
    public double[] ValidPropertyValues => new double[] { 1000, 2000, 4000 };

    public double Property { get; set; }
}

Моя главная проблема заключается в том, что ничто не мешает установить Property взначения вне ValidPropertyValues, за исключением клиентского кода (как пример ComboBox).

Есть ли способ обеспечить только с дизайном, то есть с кодом в самом классе, которыйтолько допустимые значения будут "устанавливаемыми"?

1 Ответ

0 голосов
/ 01 ноября 2019

Попробуйте эту версию:

public class Device
{
    private double data;
    public double[] ValidPropertyValues => new double[] { 1000, 2000, 4000 };
    public double Property
    {
        get { return data; }
        set {
            foreach (double val in ValidPropertyValues)
            if (value == val)
            {
                data = value;
                break;
            }
            //if not found, throw some exception
        }
    }
}

По сути, добавьте немного логики к вашему сеттеру вместо того, чтобы оставить его автоматическим.

...