質問: ErrorConst.Error2Code ) { //エラーコードに沿ったエラーメッセージを表示する。 } ``` 3.その他何か良い方法や上記方法の注意点等ありましたらご教示ください。
回答: そもそも「エラーコード」が文字列である必要性を感じないのですが、単純な enum だと参照ライブラリーのバージョン次第で (間に挿入する可能性があるから) 数値比較扱いだとダメという話でしょうか? 1 のパターンは Enum.GetName() を利用するのを複雑化しているだけに見えるのですが......。 Error1 や Error2 では「名前がどのようなエラーなのかを適切に通知できない」という話が根本的にありますので、素直に enum でエラーのパターンごとに定義する方が素直に見えます。扱いも簡単ですし。 また、const での定義は列挙しようとするとコストが高く (リフレクションで拾う形になりますよね?) ついてしまいます。 それこそ "ORA-nnnn" 的に対応したいのであれば、宣言する enum を int (デフォルト) 型扱いとし、エラーコードの値を int 扱いで固定した上で「当該値を読め」だけで良く、敢えて文字列比較する形はあまり意味が無いように思います。 それこそ ex.ErrorCode == (int)SomeErrorType.Error2 とかでいけますし。 enum のまま扱った方がメッセージカタログを作成する上でも Dictionary とかに突っ込みやすい気もしますが。