0

UI、ビジネス、データベースの 3 層の C# ソフトウェアがあります。

ビジネス層に実装したいビジネス ルールがいくつかあります。たとえば、2 つのオブジェクトが同じ名前の場合、ビジネス レイヤーは UI に例外をスローする必要があります。

私の問題は、アプリケーションが多言語であり、ビジネス レイヤーがリソース ファイルにアクセスできないことです。そのため、UI はビジネス レイヤーから例外をキャッチし、ユーザーに表示するメッセージを決定する必要があります。

リソース ファイルで取得するキーを UI に指示するプロパティを使用して、BusinessException クラスを作成することを考えていました。あなたはそれを行う良い方法ですか?それとももっと良いアイデアがありますか?ありがとうございました!

4

2 に答える 2

1

推奨される解決策は、さまざまなエラーを表すさまざまな例外タイプを作成し、重要なデータをプロパティとして例外に追加し、UI がユーザーに表示されるエラー メッセージを処理できるようにすることです。

これは、ユーザーに表示されるテキスト (エラー メッセージを含む) を処理する別の UI 設計チームがある場合に最適です。率直に言って、開発者は他の開発者に対しては良いエラー メッセージを書く傾向がありますが、ユーザーに対してはそうではありません。

それ以外の場合は、UI が検索できる例外に何らかの形式のメッセージ ID を埋め込むか (提案どおり)、ビジネス層でエラー メッセージをローカライズします。

于 2012-09-13T14:27:29.387 に答える
0

最終的に、これら 2 つのソリューションを組み合わせることになりました。したがって、BusinessRuleException という 1 つのクラスのみを使用しています。すべてのビジネス ルールの列挙型であるプロパティ「ルール」としてのこのクラス。

UI が BusinessRuleException を受け取ると、それをキャッチし、「ルール」をリソース ファイルと比較して、ユーザーにわかりやすいメッセージを取得できます。UI が翻訳を見つけられない場合、ルールをそのまま送信するだけです。そのため、ユーザーは何が起こっているのかを理解するためにまだ変更を加えています。

異なるビジネス ルールごとに異なる例外の解決策を好まないのは、非常に多くの余分なコードが作成されてしまい、クラスが実際に行っている作業が何であるかを理解するのに役立たないからです。

于 2012-09-20T20:00:06.327 に答える