2

プロパティが取得できる値に関する制限をコーディングするための正しい(そして最良の)方法は何でしょうか?

たとえば、次の単純なクラスがあるとします。

Public Class MyClass
   Public Property MyDate As Date

ここで、実行時に設定されたと仮定しますMyDateが、1年未満前の値を取得することはできません。

Try...CatchMyDateのセッターで例外をスローし、これをメインモジュールでプログラムして、値が悪い場合、またはこれを行うためのより良い方法がある場合は、ユーザーに警告するのは正しいですか?

これはばかげた単純な質問だと思いますが、プログラミングのベストプラクティスに従ってこれを実行していることを確認したいだけです。

4

3 に答える 3

5

はい、スローと例外は良い考えです。ArgumentOutOfRangeExceptionは、そのような状況で最適のようです。MSDNに続いて:

引数の値が、呼び出されたメソッドで定義された値の許容範囲外の場合にスローされる例外。

于 2012-11-20T19:24:12.060 に答える
2

例外をスローすることは有効なオプションですが、私はそれに対してお勧めします。その理由は、プログラマーがプロパティを設定するとき、設定されている値以外にはほとんど何も起こらないと期待しているためです。この場合、プロパティの代わりに集合関数を使用するか、コンストラクターの一部として値を渡すことをお勧めします(プログラマーはこの種の検証ロジックが発生することを期待しています)。

于 2012-11-20T19:31:53.170 に答える
0

この記事をチェックしてください。System.ComponentModel.DataAnnotations名前空間のバリデーターの概要を示します。これらは、検証をサポートするモデルの属性です。

http://stephenwalther.com/archive/2008/09/10/asp-net-mvc-tip-43-use-data-annotation-validators.aspx

ASP.NET MVCは、JSを使用したフォームでのこれらの検証の表示をサポートしていますが、他のアプリケーションタイプでは、モデル自体から属性を読み取り、検証を適用できます。

于 2012-11-20T19:25:36.450 に答える