何にもそれを割り当てずにゲッターを呼び出す(遅延ロード)
-
22-08-2019 - |
質問
私は完全に怠惰な負荷パターンを使用してロードされたロードまたは遅延することができますDTOを持っています。それがロードされている方法のFlexアプリケーションが必要とするものに依存します。しかし、このDTOは、Flexアプリケーション(SWF)に送信されます。呼び出されたときに、通常、例えばコレクションは、のみロードされます。 .NET側の私の実装が明らかに(Flexは、サーバーの呼び出しを行うかどう除いて...私は避けたい何か)この場合には動作しませんので、私の場合はしかし、コレクションは、Flexで呼び出されます。
コレクションのゲッターでは、データがデータベースから検索されます。私は、ASP.NETページで作業するならば、それは動作しますが、DTOはフレックスに送信されない場合ます。
どのようにしてこれに対処するのでしょうか?私は、FlexにDTOを送信する前にゲッターを呼び出すことができますが、それはひどいらしい... +それは何か(および使用されることはありません、コレクションを保持するローカル変数に代入されている場合にのみ行うことができますゲッターを呼び出します... )。
解決
私はおそらくクラスのFinalize
メソッドとクラスの様々なコレクションのために、おそらくFinalizeAll
拡張方法を紹介します。この方法は、単純に通過し、それらがロードされていることを保証するために、クラスのパブリックプロパティのすべてのゲッターを参照します。あなたのFlexアプリケーションにオブジェクトを送信する前にFinalize
(またはFinalizeAll
)を呼び出します。あなたも、あなたのオブジェクトを転送する前に、ファイナライズの必要性のためにテストし、むしろ個別に各クラスをチェックするよりもインターフェイスのためのテストに基づいてメソッドを呼び出すことができるように、このインターフェイスにしたいかもしれません。
注:ファイナライズが心に浮かんちょうど最初の名前です。 (おそらく)、このためのより良い名前があるかもしれません。
他のヒント
loadDependencies
- - (フレックスに)線を介して送信される前に、あなたのDTOオブジェクトのすべての遅延ロードを取る必要があります。あなたは扶養家族をロードする方法を紹介することができます。あなたは抽象インタフェースには、この方法は、異なるのDTO間でこのようなプロセスを合理化することができます。ゲッターあなたがこのメソッドの内部でそれを説明する方法を使用してに対しては何もありません。