Tom*_*ght 3 c# attributes design-time properties visual-studio
我有一些带有一些公共属性的用户控件.特定属性是整数,但只能接受小于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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这样做可以完成工作,但是会无声地失败.我想我可以添加逻辑以将0用于负值,将最大值用于超过它的那些,但它仍然不理想.
相比之下,UserControl
如果我尝试在设计时(并且可能在运行时)设置负值,则TabValue属性(继承自)会抱怨.
如果这是通过正常例外实现的?或者,还有更好的方法?一个属性可能吗?
最佳方式是通过异常实现.继续你的代码
if (value > 0 && value <= MAXMARKERWIDTH)
{
this.markerwidth = value;
}
else
{
throw new ArgumentOutOfRangeException("Invalid value. Value must be between 0 and " + MAXMARKERWIDTH.ToString());
}
Run Code Online (Sandbox Code Playgroud)
编辑
是的,Wiktor Zychla是绝对正确的!我纠正了答案.
归档时间: |
|
查看次数: |
4239 次 |
最近记录: |