2

Lazy Load Pattern を使用して完全にロードまたは遅延ロードできる DTO があります。ロード方法は、Flex アプリケーションが必要とするものによって異なります。ただし、この DTO は Flex アプリケーション (swf) に送信されます。通常、たとえばコレクションは、呼び出されたときにのみロードされます。ただし、私の場合、コレクションは Flex でのみ呼び出されるため、この場合、.NET 側での実装は明らかに機能しません (Flex がサーバー呼び出しを行う場合を除きます... 私が避けたいこと)。

コレクションのゲッターでは、データがデータベースから取得されます。ASP.NET ページを操作する場合は機能しますが、DTO が Flex に送信される場合は機能しません。

これにどのように対処しますか?DTO を Flex に送信する前に getter を呼び出すことができましたが、それはひどいようです... + getter の呼び出しは、何かに割り当てられている場合にのみ実行できます (コレクションを保持するローカル変数は決して使用されません... )。

4

2 に答える 2

2

従属オブジェクトをロードするメソッドを導入できます。このメソッドloadDependenciesは、DTO オブジェクトのすべての遅延ロードをネットワーク経由で (Flex に) 送信する前に実行する必要があります。このメソッドをインターフェイスに抽象化して、さまざまな DTO 間でこのようなプロセスを合理化できます。このメソッド内で説明した方法でゲッターを使用することに反対するものは何もありません。

于 2009-03-25T13:50:19.970 に答える
1

Finalizeおそらく、クラスのメソッドと、クラスFinalizeAllのさまざまなコレクションの拡張メソッドを導入するでしょう。このメソッドは、クラスのパブリック プロパティのすべてのゲッターを調べて参照し、確実に読み込まれるようにします。Finalizeオブジェクトを Flex アプリに送信する前に、 (またはFinalizeAll)を呼び出します。オブジェクトを転送する前にファイナライズの必要性をテストし、各クラスを個別にチェックするのではなく、インターフェイスのテストに基づいてメソッドを呼び出すことができるように、これをインターフェイスにすることもできます。

注: Finalize は頭に浮かんだ最初の名前です。これにはもっと適切な名前があるかもしれません (おそらくあります)。

于 2009-03-25T13:48:26.060 に答える