私はしばしばそれについて疑問に思っていましたが、それを組み込んだロジックに遭遇したので、先に進んで基本を解読するための助けを得る必要があると思いました. 問題は次のとおりです。複合アプリケーション ライブラリを利用している WPF アプリケーションを見ています。アプリケーションのソース内で、ビューのプレゼンテーションで次のコード行に出くわしました。便宜上、これをプレゼンテーション A と呼びます。
private void OnSomethingChanged(SomeArgumentType arguement)
{
UnityImplementation.EventAggregator.GetEvent<EventA>().Publish(null);
}
上記のメソッドで Publish メソッドを見たとき、どこかに Subscribe があり、別のクラスにある必要があると直感的に言われました。これをプレゼンテーション B と呼びます。
UnityImplementation.EventAggregator.GetEvent(Of EventA).Subscribe(AddressOf OnSomeEventA)
OnSomeEventA と呼ばれる同じクラスに、いくつかのロジックを持つプライベート関数がありました。
ここでの私の質問は、ここですべてがどのように配線されているかということです。ここで「発行」「購読」によって正確に何が達成されますか? 「何か」が変更されたとき、コンパイラは、イベント ハンドラーのロジックが記述されている別のクラスによって「サブスクライブ」されたイベントを「発行」する OnSomethingChanged のロジックに従う必要があることをどのように認識しますか? このプロセスの根底にある配線を理解することは素晴らしいことです。
ありがとう