検証エラーを表すクラスを実装しようとしています。このクラスには、ユーザーに表示するデフォルトのメッセージである Message という文字列値が必ず含まれます。また、検証エラーが何であるかをプログラマーに示す方法も必要です。特定の検証エラーが発生したかどうかを判断する簡単な方法が必要であるという考えです。
Type という文字列メンバーを実装するのは簡単ですが、ValidationError がその型であるかどうかを判断するには、その型を説明する文字列を覚えておく必要があります。
if (validationError.Type == "PersonWithoutSurname") DoSomething();
明らかに、もっと強く型付けされたものが必要です。列挙は良いでしょう:
if (validationError.Type == ValidationErrorType.PersonWithoutSurname) DoSomething();
しかし、数百種類の検証エラーが発生する可能性があるため、数百の値を持つ見苦しい列挙型になってしまう可能性があります。
サブクラス化を使用することも思い浮かびました。
if (validationError.GetType() == typeof(PersonWithoutSurnameValidationError)) DoSomething();
しかし、私のクラス ライブラリには何百ものクラスが散らばっており、ほとんどの場合、それぞれ一度しか使用されません。
あなたたちは何をしますか?この種のことで何時間も苦しんで過ごすことができます。
私が使用する提案を思いついた人に答えてください。列挙型の提案は打ち負かすものです。