【发布时间】:2016-04-25 00:33:53
【问题描述】:
是否可以制作可以限制数字的最小值或最大值的属性。
例子:
[MinValue(1), MaxValue(50)]
public int Size { get; set; }
当我执行Size = -3; 时,Size 的值必须为 1。
我在 Google 中搜索并找不到有关此行为的单个示例,可能是因为无法制作?
我将在属性网格中使用这些属性,因此自动验证会很方便。
目前我这样的解决方法来限制最小值:
private int size;
[DefaultValue(8)]
public int Size
{
get
{
return size;
}
set
{
size = Math.Max(value, 1);
}
}
所以这就像 MinValue(1)
【问题讨论】:
-
PropertyGrid 类不会帮助您实现这一点,它对您的自定义属性一无所知。编写自定义 TypeConverter 很痛苦。在属性设置器中强制执行范围是一种简单的方法。
标签: c# attributes