0

linq to sql メソッドでインスタンス化されるオブジェクトがあります。オブジェクト フィールドが割り当てられているときに、日付フィールドを確認し、それが古い日付である場合は、このオブジェクトの割り当てを続行する前に、別のテーブルからデータを取得して計算を実行したいと考えています。
プロパティセッターを介してそのようなイベントをトリガーすることに何か問題がありますか?または、何らかのサービスを介して日付を個別に確認し、必要に応じて後で変更を加える必要がありますか?

4

2 に答える 2

1

セッター内からロジックを実行することに問題はありませんが、セッター内に配置するロジックの量に注意する必要があります。セッターの基本的な問題の1つは、属性のように機能しますが、バッキングコードがあるため、舞台裏で重要なアクションが実行されている可能性があることを忘れがちです。

アクセサーを使用するアクセサーを使用するアクセサーがある場合、この種の問題が発生する可能性があります。予期しないパフォーマンスの問題がすぐに発生する可能性があります。一般に、セッター(またはゲッター)のアクションを比較的小さなアクションのセットに保つことをお勧めします。たとえば、検証はセッターで完全に正常に機能しますが、外部リソースに対して検証を行うことは一般的にお勧めしません。これは、2つの理由からです。まず、リソースの遅延により、予想されるアクセス速度に問題が発生する可能性があります。次に、外部リソースの数です。アクセスすると、パフォーマンスが低下する可能性があります。

一般的に、ルールはこれです:それを単純にしてください。セッターで複雑なことをするのは不合理ではありませんが、そうする場合は、引き起こすすべてのアクションの結果を理解することが非常に重要であり、それが非常にうまくいくことを文書化することが非常に重要です。 (または女の子)コードを使用することは、アクセサーを単純に使用しようとするだけでなく、予期せずに大規模なリソース競合の問題を引き起こすことになります。

于 2009-05-05T06:50:08.737 に答える
0

パブリック フィールドなどの代わりにセッターを使用する利点の半分は、特定のデータの設定に関連するイベントをトリガーできるようにすることです。

キーワード: 関連。セッターがたまたま機能するため、他のことをするための「便利な」時間としてセッターを使用している場合は、間違っています。この値を設定するために他の作業が必要な場合は、必ずセッターを使用してください。

于 2009-05-05T04:42:24.143 に答える