分层事件处理程序

时间:2016-02-19 04:08:12

标签: c# delegates event-handling

假设我有一个盒子。盒子里有一堆信封。在每个信封中,有许多索引卡。如果我在一张索引卡上写东西,整个方框中的每张索引卡都应该执行方法foo()。

我看到它的方式,索引卡应该告诉它的信封发生了什么事。它的信封应该告诉方框其中一张索引卡发生了什么事。该框告诉所有信封告诉所有索引卡执行方法foo()。

我对C#的事件处理程序/委托功能相对不熟悉。据我所知,这对他们来说似乎很有用。代表们是去这里的方式,还是有更好的方法?你会如何梳理多级事件处理程序的框架?任何见解都将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果您确实想要使用事件处理程序,那么您必须记住一个对象(在这种情况下是您的索引卡)'拥有'一个事件并触发它。它不应该关心谁在听什么。那么它并不关心索引卡,信封或其他任何东西是否在听它只是触发它们。

如果我认为一个盒子里有一个包含(或索引卡片)的信封列表,而且信封里面有一张索引卡片,那么你可以这样做;

  1. 该框侦听事件,并枚举每个信封 包含枚举每个索引卡以进行更新。
  2. 信封会侦听事件并枚举他们的每张索引卡 包含进行更新
  3. 每个索引卡都会侦听事件并自行更新。
  4. 但是,我用这种方法看到的问题是索引卡的数量可能很高。所以你可以让很多索引卡听很多其他索引卡。

    我认为在这种情况下,最好选择Rob建议的发布/订阅方法。因此,您实现了一个消息队列,然后更改的索引卡在此处发布更改,并且所有侦听的内容都会获得更改通知。这将是一种更好的方法。

    但我认为你的问题有点假设,所以你可以采用基于事件的方法来实现较小的实现,可能是因为你有少量的对象。