使用RangeValidator和byte

时间:2009-04-07 18:28:42

标签: c# .net enterprise-library rangevalidator

这是有问题的财产声明:

 [RangeValidator(1,RangeBoundaryType.Inclusive,255,RangeBoundaryType.Inclusive,MessageTemplate = "StartFlexibility is out of range")]
    public byte StartFlexibility { get; set; }

调用validate方法时,抛出FormatException,告诉我值类型必须是Int32。

请问如何解决?

3 个答案:

答案 0 :(得分:1)

嗯......快速明显的修复方法是将类型更改为short或int,

但我想做的另一个观察是,范围。您告诉RangeValidator采用1到256之间的包含范围,但您可以将字节值分配到255,这可能是编译器要哭出来的原因。

RangeValidator也会从参数中推断出Range的类型,因此,请尝试强制转换

[RangeValidator((byte) 1, ...

答案 1 :(得分:1)

正如约翰尼所说,转向字节...但更像是这样

[RangeValidator(typeof(Byte), "1", RangeBoundaryType.Inclusive, "255", RangeBoundaryType.Inclusive, MessageTemplate = "Some message")]

另一种选择是在自我验证消息中调用范围验证器并在那里进行转换。

答案 2 :(得分:0)

我从来没有使用过RangeValidator类/属性,但是当一个字节只能达到255时,你有256个上限的问题吗?