2012-02-04 6 views
3

いくつかのパブリックプロパティを持つユーザーコントロールがあります。特定のプロパティは整数ですが、最大値がconst以下の正の値のみを受け入れる必要があります。現在、私は次のことを行っています:プロパティが受け入れる値の範囲を制限する正しい方法は何ですか?

private int markerwidth = 2; 
[DefaultValue(2), Category("Appearance"), Description("Size of position marker")] 
public int MarkerWidth 
{ 
    get 
    { 
     return this.markerwidth; 
    } 
    set 
    { 
     if (value > 0 && value <= MAXMARKERWIDTH) 
     { 
      this.markerwidth = value; 
     } 
    } 
} 

これは、仕事をしますが、黙って失敗します。私は、負の値には0、それを超えるものには最大値を使用するロジックを追加することができますが、それでも理想的ではありません。

対照的に、デザイン時(おそらく実行時)に負の値を設定しようとすると、TabValueプロパティ(UserControlから継承されます)が表示されます。

通常の例外を除いてこれが達成された場合は、それとも良い方法がありますか?属性はおそらく?

答えて

6

最も適切な方法は、例外経由で達成することです。ただ、

if (value > 0 && value <= MAXMARKERWIDTH) 
    { 
     this.markerwidth = value; 
    } 
    else 
    { 
     throw new ArgumentOutOfRangeException("Invalid value. Value must be between 0 and " + MAXMARKERWIDTH.ToString()); 
    } 

EDIT

はい、あなたのコードを続行、Wiktor第Zychlaは絶対的に正しいです!私は答えを修正した。

+0

ありがとうございます。私はこれをより完全な答えとして受け入れました。 –

2

ArgumentOutOfRangeExceptionが内蔵されていますが、ここに収まると思います。

関連する問題