プロパティの値を設定すると、内部値を更新する前または後に検証できます。
以前に検証した場合、新しい値が無効な場合は例外をスローできます。これにより、オブジェクトは常に有効な状態になります。
後で検証する場合は、(つまりIEditableObjectを介して) 元に戻す必要があるため、ユーザーはいつでも編集をキャンセルできます。ここで例外をスローするか、IDataErrorInfoを介してエラーを公開するオプションもあります。
セットの前に検証する場合、IDataErrorInfoは意味がないと思います。また、検証シナリオでは例外をスローすることは保証されないと主張する人もいます。
カスタム オブジェクトが BindingList に含まれ、データ ソースとしてグリッドに設定されているシナリオでは、検証後の検証がうまく機能します。
前の検証はグリッドでも問題なく動作しますが、プロパティ値の設定が失敗したことをデータ グリッドに通知するために、例外をスローする必要があります (多くの追加コードは必要ありません)。
IEditableObjectとIDataErrorInfo、INotifyPropertyChangedなどを実装するドメイン オブジェクトにも満足できません。ドメイン オブジェクトが余分な懸念事項で雑然としたままになります。しかし、データバインディングでniceを配置したい場合はやむを得ないようです。ラッパー、おそらく DTO を作成することもできますが、これらのデータバインディング ビットをサポートするためだけに、ほとんどダミーの追加コードを書かなければならないことにあまり夢中ではありません。
オブジェクトをどのように検証しますか (できればデータバインディングと UI のコンテキストで)。