属性的MinValue和MaxValue属性

Jae*_*aex 14 c# attributes

是否可以创建可以限制数字的最小值或最大值的属性.

例:

[MinValue(1), MaxValue(50)]
public int Size { get; set; }
Run Code Online (Sandbox Code Playgroud)

当我做的Size = -3;价值Size必须是1.

我在谷歌搜索过,找不到关于这种行为的单一例子,也许是因为它无法制作?

我将在属性网格中使用这些属性,因此具有自动验证可以很方便.

目前我这样解决方法限制最小值:

    private int size;

    [DefaultValue(8)]
    public int Size
    {
        get
        {
            return size;
        }
        set
        {
            size = Math.Max(value, 1);
        }
    }
Run Code Online (Sandbox Code Playgroud)

所以这就像MinValue(1)

Jor*_*dão 6

尽管可以创建自定义属性,但属性只是它们所注释的成员的元数据,无法更改其行为。

因此,您将无法通过普通属性获得所需的行为。您需要一些东西来处理属性,以便执行所需的行为。

看一下TypeConverters的可能性。