私は「DDDwithC#」の世界に不慣れで、検証ルールをどこで確認するかについて質問があります。たとえば、私のエンティティの1つには、ステータスがロックされている場合、他のプロパティを変更できない閉鎖の概念があります。
この検証を配置するのに最適な場所はどこですか?私はこのルールをアプリケーションレイヤーに持ち込むのは正しくないようです。フィールドエディションを禁止するだけで、各セッターの内部はDRYの原則を破ったようです。なにか提案を?
私は「DDDwithC#」の世界に不慣れで、検証ルールをどこで確認するかについて質問があります。たとえば、私のエンティティの1つには、ステータスがロックされている場合、他のプロパティを変更できない閉鎖の概念があります。
この検証を配置するのに最適な場所はどこですか?私はこのルールをアプリケーションレイヤーに持ち込むのは正しくないようです。フィールドエディションを禁止するだけで、各セッターの内部はDRYの原則を破ったようです。なにか提案を?
その検証ルールがドメインの一部である場合、ドメインオブジェクトは間違いなくロジックを配置するのに適切な場所です。
コードをDRYに保つことに懸念がある場合は、いくつかのオプションがあります。
UnityまたはCastleでインターセプトを使用する方法を見てください
すべてのセッターをプライベートにし、更新するプロパティを示すUpdateIfNotLocked()
メソッドと、プロパティの新しい値を取得し、オブジェクトがロック状態でない場合は、プロパティを設定Expression
するためにを作成、コンパイル、実行します。Expression
弾丸をかみ、このクラスのセッターに警備員を配置します。
方法1と2はどちらも妥当な量の作業/手間になる可能性があるため、この場合は実用的なアプローチを採用することをお勧めします。