2012-02-04 38 views
3

我有一些公共属性的用户控件。一个特定的属性是一个整数,但只能接受小于最大值const的正值。目前我做了以下工作:限制物业接受的价值范围的正确方法是什么?

private int markerwidth = 2; 
[DefaultValue(2), Category("Appearance"), Description("Size of position marker")] 
public int MarkerWidth 
{ 
    get 
    { 
     return this.markerwidth; 
    } 
    set 
    { 
     if (value > 0 && value <= MAXMARKERWIDTH) 
     { 
      this.markerwidth = value; 
     } 
    } 
} 

这样做的工作,但失败的默默。我想我可以添加逻辑来使用0为负值,超过它的最大值,但它仍然不理想。

相比之下,TabValue属性(从UserControl继承)抱怨,如果我试图在设计时(并假定在运行时)设置负值。

如果这实现了正常的异常?或者,还有更好的方法?一个属性可能?

回答

6

最理想的方法是通过例外来实现。只要继续你的代码

if (value > 0 && value <= MAXMARKERWIDTH) 
    { 
     this.markerwidth = value; 
    } 
    else 
    { 
     throw new ArgumentOutOfRangeException("Invalid value. Value must be between 0 and " + MAXMARKERWIDTH.ToString()); 
    } 

编辑

是,Wiktor的Zychla是绝对正确的!我纠正了答案。

+0

感谢你们俩。我接受了这个,因为它是更完整的答案。 – 2012-02-04 13:29:14

2

有一个内建的ArgumentOutOfRangeException,我想它适合在这里。

相关问题