我有一个属性网格对象,要求你选择一个枚举,例如,你有:
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作为所有成员,如果不使用它们,只需将它们隐藏在网格中。
然而,这似乎并不常见。是否有更正式的方法可以根据其他枚举选择使用这些可选参数?
我想知道我是否完全从错误的方向接近这个。
答案 0 :(得分:2)
更好的方法是创建状态感知属性访问器,如下所示:
public double? Sigma
{
get
{
if (XScale == XSCalingType.Sigma)
return _sigma;
else
return null;
}
set { _sigma = value;}
}
然后,如果XScale不是Sigma,则属性Sigma将显示为空。