这是有问题的财产声明:
[RangeValidator(1,RangeBoundaryType.Inclusive,255,RangeBoundaryType.Inclusive,MessageTemplate = "StartFlexibility is out of range")]
public byte StartFlexibility { get; set; }
调用validate方法时,抛出FormatException,告诉我值类型必须是Int32。
请问如何解决?
答案 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个上限的问题吗?