C# 分层事件处理程序
假设我有一个盒子。盒子里有一串信封。每个信封里都有许多索引卡。如果我在一个索引卡上写东西,那么整个框中的每个索引卡都应该执行foo()方法 在我看来,索引卡应该告诉信封发生了什么事。它的信封应该告诉盒子它的一张索引卡出了什么事。该框告诉所有信封通知其所有索引卡执行方法foo()C# 分层事件处理程序,c#,delegates,event-handling,C#,Delegates,Event Handling,假设我有一个盒子。盒子里有一串信封。每个信封里都有许多索引卡。如果我在一个索引卡上写东西,那么整个框中的每个索引卡都应该执行foo()方法 在我看来,索引卡应该告诉信封发生了什么事。它的信封应该告诉盒子它的一张索引卡出了什么事。该框告诉所有信封通知其所有索引卡执行方法foo() 我对C#的事件处理程序/委托功能相对不熟悉。据我所知,这似乎对他们很有用。代表们是走这条路,还是有更好的办法?如何梳理出多级事件处理程序的框架?任何洞察都将不胜感激。如果您确实想使用事件处理程序,那么您必须记住对象(在本
我对C#的事件处理程序/委托功能相对不熟悉。据我所知,这似乎对他们很有用。代表们是走这条路,还是有更好的办法?如何梳理出多级事件处理程序的框架?任何洞察都将不胜感激。如果您确实想使用事件处理程序,那么您必须记住对象(在本例中是您的索引卡)“拥有”一个事件并触发它。它不应该关心听的是谁或什么。所以,不管索引卡、信封或其他什么东西是否在听,它只会触发它们 如果我假设一个盒子中有一个包含信封的列表(或索引卡),而信封中有一个包含索引卡的列表,那么您可以:
但我认为你的问题有点假设性,所以当你有少量对象时,你可以采用基于事件的方法来实现一个较小的实现。如果你确实想使用事件处理程序,那么你必须记住一个对象(在本例中是你的索引卡)“拥有”一个事件并触发它。它不应该关心听的是谁或什么。所以,不管索引卡、信封或其他什么东西是否在听,它只会触发它们 如果我假设一个盒子中有一个包含信封的列表(或索引卡),而信封中有一个包含索引卡的列表,那么您可以:
但我认为您的问题有点假设性,因此您可以采用基于事件的方法来实现较小的实现,可能是在对象数量较少的情况下。看起来是发布/订阅模式的一个很好的用例。所有索引卡都将是订阅者,潜在的发布者看起来是发布/订阅模式的良好用例。所有索引卡都是订阅者,也可能是发行者