具有可选成员的属性网格是最佳方法

本文关键字:网格 最佳 方法 属性 成员 | 更新日期: 2023-09-27 17:57:45

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

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成为所有成员,如果不使用它们,就把它们从网格中隐藏起来。

然而,这种做法似乎并不常见。有没有一种更正式的方法可以在其他枚举选择的基础上使用这些可选参数?

我想知道我是不是完全从错误的方向来处理这个问题。

具有可选成员的属性网格是最佳方法

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

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

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