限制属性将接受的值范围的正确方法是什么
本文关键字:范围 方法 是什么 属性 | 更新日期: 2023-09-27 18:22:23
我有一个带有一些公共属性的用户控件。特定属性是整数,但只能接受小于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
继承)会抱怨。
如果这是一个正常的例外?或者有更好的方法吗?也许是属性?
最理想的方法是通过异常来实现。只需继续您的代码
if (value > 0 && value <= MAXMARKERWIDTH)
{
this.markerwidth = value;
}
else
{
throw new ArgumentOutOfRangeException("Invalid value. Value must be between 0 and " + MAXMARKERWIDTH.ToString());
}
编辑
是的,维克托·齐奇拉是绝对正确的!我更正了答案。
有一个内置的ArgumentOutOfRangeException
,我想它适合这里。