使用 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 有什么意义吗?或者任何新的最佳实践?