問題タブ [eventaggregator]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - EventAggregator と ServiceLocator の問題
Prism と MVVM を使用して WPF プロジェクトの作業を開始しました。eventAggregator を使用しようとしていますが、以下の行を実行すると例外が発生します。
しかし、私は自分が間違っていることを理解できません。おそらくこれは非常に単純なことですが、私はこれに数時間苦労しています。
誰かが私を助けてくれることを願っています、事前に感謝します
prism - Shared Services PRISMの利用目的
プリズムでの共有サービスの目的と使用法は何ですか?
の代わりに共有サービスを使用する必要があると思わせるものは何EventAggegator
ですか?
prism - PrismフレームワークにおけるEventaggreagtorの役割は何ですか?
イベントの公開とサブスクライブの複雑さを軽減するために、Eventaggregatorが単一のソースとして機能するという考えがあります。この点で他に何が理解できるか。コードによる例ではなく、一般的な説明のみが必要です。
backbone.js - backbone.js + グローバル イベント ディスパッチャー + require.js: ハウツー?
コレクションに編成され、対応するビューやビューのコレクションに接続された多数のバックボーン モデルがあります。同じコレクションに属さないこれらのモデルの一部は、別のモデル (および複数のモデル) にとって重要なイベントをトリガーする必要があります。
これに対処するための推奨される方法は、ここや他の場所で説明されている「グローバル イベント ディスパッチャー/アグリゲーター」だと思います。
ただし、たまたまrequire.jsも使用しています。これは、ディスパッチャー/アグリゲーターをアプリケーションの名前空間オブジェクトにアタッチするという考えに反しているようです-または、ここで間違っていますか?
私の質問は次のとおりです。
prism - 一般的なユーザー制御のPrismイベントアグリゲーター
私のwpfアプリケーションには、いくつかのユーザーコントロールがあり、そのうちの1つは特定のデータ型を選択するためのTreeViewです。selectedItemが変更されると、(PrismのEventAggregatorを使用して)selectionChangedイベントを公開すると、サブスクライバーはこのイベントを取得します。ここまでは順調ですね。
ここで、新しいビューで同じユーザーコントロールを使用し始め、実際には新しいウィンドウで使用します。新しいウィンドウからselectionChangedイベントが発生すると、両方のサブスクリプションがトリガーされます。イベントの送信者を指定して、サブスクライバーがイベントの対象者を確認できるようにします。これを行う方法はたくさんありますが、今のところ好きな方法はありません。
質問があなたたちに出ます、どうすればこれを達成できますか?
c# - Winform MVP アプリのカスタム イベント アグリゲーター
私が書いている winforms MVP アプリケーション用に独自のイベント アグリゲーターを構築することにしました。目的は、ビュー (ユーザー コントロール) が、ビューを持つモデルからのイベントをサブスクライブできるようにすることです。
質問は; 1 つの共通イベント アグリゲーターが存在する必要があり、アグリゲーターは対話する必要があるユーザー コントロールのアプリケーションを構成する場合にのみ必要なので、イベント アグリゲーターを公開する最善の方法は何ですか?
これまでの私の提案:
- すべてのユーザーコントロールには IEventAggregator が必要であり、アグリゲーターはユーザーコントロール自体には必要なく、機能が追加されたユーザーコントロールで構成されるマスターアプリだけであるため、注入すると混乱すると思います。
- EventAggregator を静的またはシングルトンにする。ただし、これは、個々のユーザー コントロールが静的アグリゲーターを介してイベントを発行する必要があるという同様の問題を引き起こします。
私を助けるためのアイデアはありますか?
events - イベントアグリゲーターパターンは、サブスクライバーのさまざまなパブリッシャーをどのように管理しますか?
イベントアグリゲーターパターンでは、パブリッシャーはイベントをアグリゲーターに公開し、サブスクライバーはアグリゲーターを介して特定のイベントをサブスクライブします。
3つのサブスクライバー、、、およびがSubscriberA
あるとします。彼らは皆、と呼ばれるイベントを購読したいと思っています。は、またはのいずれかで起動できます。およびの複数のインスタンスが存在する場合もあります。SubscriberB
SubscriberC
OnPowerUpEvent
OnPowerUpEvent
PowerItemA
PowerItemB
PowerItemA
PowerItemB
このシナリオに基づいて、イベントアグリゲーターパターンによって、サブスクライバーが特定のパブリッシャーによって発行されたイベントをサブスクライブできるようにする方法がわかりません。購読者は一般的にイベントにしか購読できずOnPowerUpEvent
、発行者が誰であってもイベントに応答できるように思えます。
たとえば、任意のインスタンスによって公開されSubscriberA
たイベントをサブスクライブしたい場合があります。の特定のインスタンスによって公開されたイベントをサブスクライブすることができます。また、発行者が誰であるかに関係なく、一般的にイベントを購読することをお勧めします。OnPowerUpEvent
PowerItemA
SubscriberB
OnPowerUpEvent
PowerItemB
SubscriberC
OnPowerUpEvent
これらの3つの異なるケースでは、イベントアグリゲーターパターンはこれをどのように管理しますか?
c# - Reflection を使用して Prism EventAggregator イベントをサブスクライブする
実行時に Prism モジュール間でイベント サブスクリプションを動的に接続しようとしているため、Reflection を使用して EventAggregator イベントをサブスクライブしたいと考えています。(Silverlight 5、Prism、MEF を使用しています)。
私が達成したい_eventAggregator.GetEvent<MyType>().Subscribe(MyAction)
のは、モジュールの 1 つで呼び出しを行うことですが、呼び出しに行き詰まってい_eventAggregator.GetEvent<MyType>()
ます。そこから電話するにはどうすればよいSubscribe(MyAction)
ですか?
私の Event クラスがpublic class TestEvent : CompositePresentationEvent<string> { }
. これはコンパイル時にはわかりませんが、実行時の Type はわかります。
これが私がこれまでに得たものです:
正しい方向へのポインタをいただければ幸いです。
c# - イベントアグリゲーターに対してイベントハンドラーを使用する必要があるのはいつですか?
イベントハンドラーとイベントアグリゲーターをいつ使用する必要がありますか?
私のコードには、親のViewModelによって制御される2つのViewModelがありますが、イベントハンドラーを使用してそれらの間で通信する必要があるかどうかを判断しようとしていますか?または、イベントアグリゲーターを使用しますか?単純なメソッド呼び出しになります。パラメーターをそれらの間で渡す必要はありません。
c# - イベント アグリゲーターで列挙型とイベント クラスを混在させる
最近、独自の単純なイベント アグリゲーターを実装しようとしました。MSDN のイベント アグリゲーターの記事から多くのインスピレーションを得ました。MSDN のイベント アグリゲーターについて気付いたことが 1 つあります。それは、イベントが実際には独自のクラスであるということです。これはまったく悪いことではありません。ただし、小さなイベントごとに常に新しい空のクラスを作成するのは面倒です。
私が扱いにくいと思う理由は、個々の詳細なイベントごとにクラスを作成する必要があるためです。たとえば、マウス クリック イベントには、double_click、single_click、left_click、right_click などがあります。これらはすべて独自のクラスを持ちます。しばらくするとぐちゃぐちゃになります。
したがって、私自身の実装でClickEvent
は、 がクラスであるような方法で作成できると考えましたが、 Click イベントに関連するすべての詳細なイベントは の「タイプ」になりClickEvent
ます。この場合、「タイプ」はenum
. 使用法は次のようになります。
ただし、この実装が強く型付けされたイベントを持つという目的全体を無効にするかどうかはわかりませんか? 現在、ClickEvent
はさまざまなイベント列挙型の単なるコンテナーのようです。