c# - 变更通知的最佳模式(事件或委托(delegate))

标签 c# .net events design-patterns delegates

我有一个解决方案,将项目集合从源传递给演示者。当源更新时,我希望能够通知演示者显示新结果。

我想到的是创建一个 ChangeNotification 类,将其与结果一起传递,并让该类通知演示者。现在,据我所知,这可以通过两种方式实现,要么 ChangeNotification 可以具有演示者订阅的事件,或者它可以具有演示者设置的委托(delegate),并且如果它不为空,则源调用。

使用事件的好处是,不仅仅是消费者可以对通知使用react,并且您可以为其连接 react 性扩展,缺点是您必须管理事件的订阅/取消订阅以进行正确的垃圾收集。委托(delegate)很简单,但你会失去一些灵活性。

对于这种情况,最优雅的模式是什么?还有其他我没想到的方法吗?

最佳答案

如果您有多个观察者,则需要 Events 或 MultipleDelegates。如果您只有一名观察员,并且想要强制执行,则一名委托(delegate)就足够了。然而,就哪一个最好而言,恕我直言,我认为该事件更加灵活并且非常适合该模式。 ObservableCollection 和 INotifyPropertyChanged 是基于事件的实现。顺便说一句,为 tbischel +1 引用这些类。

关于c# - 变更通知的最佳模式(事件或委托(delegate)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4221162/

相关文章:

c# - 为什么我应该避免在 C# 中使用 Properties?

c# - 我可以复制 .OFT 文件并更改其主题吗

c# - 使用一系列日期时间填充列表的简单方法

JavaScript "window.onload"– "window"真的有必要吗?

windows - Windows-从命令行为事件创建任务

javascript - ui.bootstrap.typeahead : how to combine $http with debounce

c# - PayPal 集成 (IPN) - 真的有可能吗?

c# - 有没有办法使用 XCode 创建 ASP .NET 文件?

c# - 为什么 VS2015 允许 .Net 4.5.2 应用程序使用 C# 6.0 函数?

c# - 如何减少生成的事件数