興味のある関係者に変更を通知するために、MessagingCenterと標準の.NETイベントハンドラを使用する違いは何ですか?同じことの興味のある関係者に変更を通知するために、MessagingCenterと標準の.NETイベントハンドラを使用する違いは何ですか?
二(未テスト)の実装は、証明するために、以下のとおりです。
public class FooClass {
public event EventHandler SomeEvent;
public void DoSomeWork() {
// ... stuff
if(SomeEvent != null)
SomeEvent(this, EventArgs.Empty);
}
}
public class BarClass {
FooClass _foo;
public BarClass() {
_foo = new FooClass();
_foo.SomeEvent += delegate {
// ... did something
};
}
}
の詩:
public class FooClass {
public const string SomeEventName = "SomeEvent";
public void DoSomeWork() {
// ... stuff
MessagingCenter.Send<FooClass>(this, SomeEventName);
}
}
public class BarClass : IDisposable {
public BarClass() {
MessagingCenter.Subscribe<FooClass>(this, FooClass.SomeEventName, delegate {
// .. did something
});
}
public void Dispose() {
MessagingCenter.Unsubscribe<FooClass>(this, FooClass.SomeEventName);
}
}
私はどんな違いがあるようには思えない伝えることができるものから、誰もがの賛辞またはの賛同のいずれかを示唆することができれば、それは私の理解を助けるだろう。現在、イベントハンドラを使用しています。
MessagingCenterの使用に切り替えることはありますか?それとも新しいベストプラクティスですか?
例の違いはあまりありませんが、誰かがこのようにイベントアグリゲータを使用するのは疑問です。意図したとおりに使用すると、未加工のイベントよりも利点があります。ほとんどの場合、未処理のイベントでも同じことさえできません。 – Evk
ベストプラクティスの提案はありますか? –