私は (レガシー) WinForms アプリケーションに取り組んでおり、MVC で慣れている方法でユーザーにエラー情報を提供するより動的な方法を実行したいと考えています。
ただし、WinForms での検証はインターフェイスを回避するように見えIDataErrorInfo
ますが、バインドに使用するオブジェクトにこのインターフェイスを実装するのは好きではありません。多くの場合、コマンド オブジェクトをインターフェイスにバインドできます。コマンドは、ビジネス オペレーションを記述する DTO であり、ドメイン レイヤーで定義されます (これらのコマンドを実行するためのロジックはビジネス レイヤーで定義されます)。
コマンドはドメインの一部であるため、コマンドを実装したくありません。これにより、コマンドがIDataErrorInfo
検証ロジックと直接結合されるためです (IDataErrorInfo
メソッドの 1 つを呼び出すと検証が前提となるため)。私がやりたいことは、コマンド プロパティを DataAnnotation 属性でマークすることだけです。
だから私の質問は、バインドに使用するクラスに実装することなく、WinForms で (を使用して) 検証を有効にするにはどうすればよいですか?ErrorProvider
IDataErrorInfo
たとえば、ErrorProvider
DataAnnotations のValidate
クラスにフックして検証を委譲する方法はありますか?