3

私のドメイン モデル内の特定のエンティティには、適用する必要があるいくつかの不変条件があります。プロジェクトの名前は少なくとも 5 文字である必要があり、プロジェクトに関連付けられる特定の製品が存在する必要があり、期日は現在の日付より前であってはなりません。時間など

明らかに、クライアントが検証に関連するエラーメッセージを表示できるようにしたいのですが、プログラムのいくつかの異なるレイヤー間で検証ルールを常に維持したくありません。たとえば、ウィジェット、コントローラー、アプリケーションサービスなどです。またはコマンド オブジェクト、およびドメイン。さらに、説明的なエラー メッセージはプレゼンテーションに関連しており、ドメイン レイヤーに属していないように見えます。これらのジレンマをどのように解決できますか?

4

3 に答える 3

2

予想されるエラー条件に関連する特定の例外を作成します。これは一般的な例外処理の標準であり、問​​題の解決に役立ちます。例えば:

public class ProjectNameNotLongEnoughException : System.Exception

また

public class DueDatePriorToCurrentDateException : System.Exception

ドメイン モデルに対して作成されたアプリケーションがこれらの例外に注意する必要があることを認識し、アプリケーションのプレゼンテーション内でメッセージを表示できるように、それらをスローする可能性のあるメソッドの xml コメントでこれらの考えられる例外をマークします。これにより、表示の問題でドメイン モデルを混乱させることなく、カルチャに基づいてローカライズされたエラー メッセージを表示することもできます。

クライアント側の検証を実行することを選択した場合、残念ながら、ケーキを手に入れて食べることはできません. この場合、アーキテクチャを維持しながら目的の機能を実現するために、検証ロジックを複製する必要がある場合があります。

お役に立てれば!

于 2013-02-05T14:20:39.693 に答える
-1

説明的なエラー メッセージは、ビジネスよりもプレゼンテーションに関連しているように見えるかもしれませんが、実際には、説明的なエラー メッセージはドメイン モデル内に含まれるビジネス ルールを具現化しています。 . このメッセージは、レイヤーを再スローして、最終的にユーザーに表示できます。

現在、プリエンプティブ検証 (ユーザーが特定の文字のみを入力したり、特定の範囲のオプションから選択したりできるウィジェットなど) になると、エンティティには、動的に生成された正規表現を返すいくつかの定数またはメソッドが含まれる場合があります。ビューモデルによって、次にウィジェットによって実装されます。

于 2013-02-04T22:33:12.260 に答える