Repository navigation
OTR_MessageDefinition
nishi_74322014 edited this page Oct 27, 2026
·
1 revision
メッセージの本文をコードから追い出し、メッセージ ID で引けるようにする機能。
- 定義ファイル
MSGDefinition.xmlにメッセージ ID と雛形を書き、GetMessage.GetMessageDescriptionで取得する。 - 例外の
messageIDと対応させることで、例外の型を増やさずにエラーの種類を識別できる(例外処理方式)。
パスは設定 FxXMLMSGDefinition で指定する。
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE MSGD[ … DTD … ]>
<MSGD>
<Message id="E0001" description="○△□エラー、%1が%2しました。"/>
<Message id="I0001" description="登録しました。"/>
</MSGD>| 要素・属性 | 内容 |
|---|---|
Message の id
|
メッセージ ID。XML の ID 型なので、先頭に数字を使えない(E0001 は可、0001 は不可) |
Message の description
|
メッセージの雛形 |
-
E(異常系)・I(正常系)の接頭辞は慣例で、フレームワークは解釈しない。 - DTD を省かない(Open 棟梁の XML 定義ファイルに共通の作法)。
using Touryo.Infrastructure.Framework.Util;
string msg = GetMessage.GetMessageDescription("E0001");| プレースホルダ | 置換される値 |
|---|---|
%1 |
業務例外の Message
|
%2 |
業務例外の Information
|
throw new BusinessApplicationException("E0001", "受注番号", "重複");
// → 「○△□エラー、受注番号が重複しました。」-
置換するのは
GetMessageではなく、P 層の親クラス2 である。既定では Web Forms の親クラス2 にだけ実装されている。 - 置換しない親クラス2 で
%1を書くと、そのまま画面に出る。確認できないときは、%1/%2を使わず完成した文で定義する。
| 系統 | 定義する人 | 置き場 |
|---|---|---|
| 事前定義のメッセージ | 纏め者(基盤として先に用意) |
MyBusinessApplicationExceptionMessage / MyBusinessSystemExceptionMessage(.resx。国際化対応) |
| プロジェクト進行中に採番するメッセージ | 開発者 | MSGDefinition.xml |
事前定義のものは再定義せずに使い、新しいエラーは MSGDefinition.xml に採番する。
カルチャ別のファイル(MSGDefinition_ja-JP.xml など)を用意して、多言語に対応できる(設定 FxExceptionMessageCulture など)。
- スキル
opentouryo-messageとopentouryo-exceptionを使わせる。 - エージェントはメッセージをコードに直書きしがちなので、ID で引いているかをレビューで見る。
Tags: 再構築
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。