1

FieldManager が BusinessBase 内で保護されたプロパティとして公開されていることは知っています。PropertyInfoManager が同じ方法でセットアップされないのはなぜですか? 私が収集できるものから、PropertyInfoManger はタイプの辞書と各タイプの PropertyInfo のリストを保持しています。FieldManager の動作と同様に、PropertyInfo のリストを BusinessBase 内に保持する方が簡単に思えます。登録されている PropertyInfo をそれらが属する Type にリンクするために、PropertyInfoManager で多くの作業が行われます。

これには理由があると確信していますが、私はそれを見ていないか、十分に理解していません。私は CSLA について、そしてなぜ物事がそのように構築されたのかについてもっと学ぼうとしています。

4

1 に答える 1

0

これを行う主な理由は 2 つあります。

1) スレッド セーフ - PropertyInfoManager クラスは基本的に Dictionary の静的ラッパーであり、Type の PropertyInfo を登録し、Type の PropertyInfo を取得できます。スレッドの安全性を確保するためにロックを処理します。

2) N レベルの元に戻す - CSLA のこの機能により、フィールド値の保存が非常に複雑になります。保護された FieldManager は、BusinessBase のすべての管理対象フィールドの値を維持する責任があります。これを行うには、FieldDataManager クラスが型の PropertyInfo にアクセスする必要があるため、BusinessBase から List を渡すのではなく、これらを 1 か所に配置する方がよい方法です。

この場合、FieldDataManager クラスと PropertyInfoManager クラスによってモジュール性が追加され、設計時に懸念の分離 (SoC) と単一責任原則 (SRP) の影響を受けたと確信しています。

私は CLSA についても学んでおり、そうする中で、フレームワーク自体からオブジェクト指向設計についてかなりのことを学びました。The BookとThe Source Codeを読み、CSLA .Net についてさらに学び続けることをお勧めします。

于 2011-02-28T18:29:32.267 に答える