2011-02-08 16 views
0

をコンストラクタに渡された代表者:理論:このようなものが可能であるのであれば、私は思っていた

私はプログラムだが、私は私のオブジェクトのいずれかのインスタンスを作成しようとしています。私は、オブジェクトを作成しようとしていることをすべての加入者に知らせるイベントを発します。このイベントの一環として、私は後でオブジェクトのコンストラクタに渡すハッシュテーブルを渡します。

このHashtableを変更することができますか?その型のデリゲートを値として持つデリゲート型のエントリを追加できますか?加入者がビジネスを終了すると、事前作成イベントが終了します。ハッシュテーブルに加えられた変更は、イベントを発生させたオブジェクトで表されるでしょうか?したがって、このHashtableがオブジェクトのコンストラクタに渡された場合、そのオブジェクトは外部ソースのメソッドを含む可能性があります。だから、基本的に

-

ゴーは、同じタイプのデリゲートを存在する場合、自分の代わりにハッシュテーブルからメソッドを使用するオブジェクト
オブジェクトのコンストラクタでイベントによって変更されたオブジェクト
火要求デリゲートイベント
使用デリゲートのハッシュテーブルを作成します
オブジェクトは標準機能でカスタムコードを実行します

また、私が言っていることが可能であっても意味をなさないかわかりません。

+0

私は、多くのクライアント間で変更可能なハッシュテーブルを渡すという考えが好きではありません。 – ChaosPandion

答えて

1

可能ですが、公開してHashSet<T>を送信することをおすすめします。その理由は、任意の加入者がHashSet<T>の値を変更する可能性があるからです。

代わりに、ここではイベントが正しい行動のコースであるかどうかわかりません。私は依然として代議員を使用しますが、私はイベントとしてそれらを公開しません。パブ/サブパターン(ここでは、通知されるオブジェクトがSub/Unsubメソッドを介してデリゲートを渡す方が良い場合があります)。

これにより、デベロッパーのシグネチャを変更して、呼び出し時に(HashSet<T>を渡すのではなく)実装がデータ値を返すようにすることができます。

次に、1回の呼び出しだけでなく、GetInvocationListを呼び出して個々のデリゲートを取得します。その後、ループバックして返される値を収集します。

これ以降、値を適切に集計し、その集約をオブジェクトのコンストラクタに渡します。

+0

私はチャンスを得るとすぐに、これを調べます、ありがとう。 – FlyingStreudel

関連する問題