0

問題のプロパティ宣言は次のとおりです。

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

検証メソッドが呼び出されると、FormatException がスローされ、値の型が Int32 である必要があることが通知されます。

修正方法を教えてください。

4

3 に答える 3

1

ええと...すぐに明らかな修正は、型をshortまたはintに変更することです。

しかし、私がやりたい別の観察は、範囲です。RangeValidator に 1 から 256 までの包括的な範囲を取るように指示していますが、255 までのバイト値を割り当てることができます。おそらくそれがコンパイラの理由です。

RangeValidator もパラメーターから Range の型を推測しているので、キャストしてみてください

[RangeValidator((byte) 1, ...
于 2009-04-07T18:36:09.673 に答える
1

ジョニーが言うように、バイトにキャストします...しかし、もっとこのように

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

もう 1 つのオプションは、SelfValidation メッセージで範囲バリデーターを呼び出し、そこでキャストすることです。

于 2010-05-07T22:16:27.707 に答える
0

RangeValidator クラス/属性を使用したことはありませんが、バイトが 255 にしか到達できない場合に上限が 256 であることは問題ですか?

于 2009-04-07T18:36:02.857 に答える