Сетка свойств с дополнительными членами лучший подход - PullRequest
1 голос
/ 24 мая 2011

У меня есть объект сетки свойств, который требует от вас выбора перечисления, например, у вас есть:

enum XScalingType { ShowAll, Fixed, Sigma }

Теперь, основываясь на этом выборе перечисления, мы заботимся только об определенных параметрах.А именно:

ShowAll - requires none
Fixed   - double Minimum, double Maximum
Sigma   - double Sigma

Это оставляет меня со следующим классом

class MyPrefs
   XScalingType XScale
   double minimum  //only matters when XScale = Fixed
   double maximum  //only matters when XScale = Fixed
   double Sigma    //only matters when XScale = sigma

Я не уверен, как поступить отсюда.Мои мысли о том, что мне нужно сделать min \ max \ sigma всеми членами и просто спрятать их из таблицы, если они не используются.

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

Мне интересно, если я подхожу к этому с неправильного направления.

1 Ответ

2 голосов
/ 24 мая 2011

Лучший подход - создать средства доступа к свойствам, учитывающие состояние, например:

public double? Sigma
{
    get
    {
        if (XScale == XSCalingType.Sigma)
            return _sigma;
        else
            return null;
    }
    set { _sigma = value;}
}

, тогда, если XScale отличается от Sigma, свойство Sigma будет отображаться пустым.

...