我有一个解决方案,将项目集合从源传递给演示者。当源更新时,我希望能够通知演示者显示新结果。
我想到的是创建一个 ChangeNotification 类,将其与结果一起传递,并让该类通知演示者。现在,据我所知,这可以通过两种方式实现,要么 ChangeNotification 可以具有演示者订阅的事件,或者它可以具有演示者设置的委托(delegate),并且如果它不为空,则源调用。
使用事件的好处是,不仅仅是消费者可以对通知使用react,并且您可以为其连接 react 性扩展,缺点是您必须管理事件的订阅/取消订阅以进行正确的垃圾收集。委托(delegate)很简单,但你会失去一些灵活性。
对于这种情况,最优雅的模式是什么?还有其他我没想到的方法吗?
最佳答案
如果您有多个观察者,则需要 Events 或 MultipleDelegates。如果您只有一名观察员,并且想要强制执行,则一名委托(delegate)就足够了。然而,就哪一个最好而言,恕我直言,我认为该事件更加灵活并且非常适合该模式。 ObservableCollection 和 INotifyPropertyChanged 是基于事件的实现。顺便说一句,为 tbischel +1 引用这些类。
关于c# - 变更通知的最佳模式(事件或委托(delegate)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4221162/