属性网格与可选成员的最佳方法

时间:2011-05-24 18:11:34

标签: c# .net design-patterns enums propertygrid

我有一个属性网格对象,要求你选择一个枚举,例如,你有:

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作为所有成员,如果不使用它们,只需将它们隐藏在网格中。

然而,这似乎并不常见。是否有更正式的方法可以根据其他枚举选择使用这些可选参数?

我想知道我是否完全从错误的方向接近这个。

1 个答案:

答案 0 :(得分:2)

更好的方法是创建状态感知属性访问器,如下所示:

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

然后,如果XScale不是Sigma,则属性Sigma将显示为空。