2009-04-12 5 views
0

私はいくつかの子オブジェクトを動的に作成するオブジェクトを持っています。これらの子オブジェクトはUserControlから派生しています。親に情報を渡すために情報を渡す最善の方法は何ですか?過去に私はデリゲートイベントを使用しましたが、最近は子オブジェクトのコンストラクタで親への参照を使用しています。Cで子から親オブジェクトに情報を渡すための最良の方法は何ですか#

親が参照メソッドをタイムリーに実行できない場合、子オブジェクトが束縛される可能性があるので、私は緊密に結合するように注意しています。

新しい質問をしたいとは思わなかったので、ここで質問します。

イベントが動的に作成されたオブジェクトに配線されていて、そのオブジェクトが後で処理された場合は、イベントを廃棄する前にイベントを展開する必要があります。

...動的に作成されたオブジェクトを配列またはハッシュテーブルに保持している場合、そのリストアイテムを単にメモリから削除するだけで済みます。

答えて

6

状況によって異なります。あるオブジェクトが別のオブジェクトを観察し、特定の変化に反応したい場合、イベントは適切です。親への参照を保持するだけで他の状況にも適しています。非常に特殊なケースのアドバイスが必要な場合は、そのケースの詳細をお知らせください。

2

タイトカップリングと正確な状況に応じてあなたの態度によります。

個人的に言えば、デリゲート/イベントのアプローチはもっとクリーンであると思います。

参照を渡すと、子オブジェクトが親オブジェクトの型を理解する必要があることを意味しますか? OK、おそらく基本クラスやインターフェースを使うことができますが、依然として必要です。

デリゲート/イベントモデルの利点は、子オブジェクトがイベントを公開するだけで、登録されているユーザーはイベントを受信できることです。古典的なオブザーバーパターン。

0

私はJonが提案したように、イベントは他のコントロールの変更を観察するのが最適ですが、これが最適です。 また、メインのUserコントロールでプロパティを作成し、Get、それを子コントロールから設定することができます。

これが役に立ちます。

0

親密な結合が心配な場合は、データを戻すために必要なメソッドだけを公開する親オブジェクトへのインタフェースを使用することを検討してください。

子コントロール(UIスレッド)のロックを防止するために、別のスレッドで作業を行うにはBackgroundWorkerを使用することがあります。

関連する問題