事件在c#和silverlight中向上传递对象链

事件在c#和silverlight中向上传递对象链,c#,silverlight,events,design-patterns,delegates,C#,Silverlight,Events,Design Patterns,Delegates,我有一组协作对象,我希望保持此结构完整,因为关注点分离、单一负责原则和测试能力 我面临的挑战是如何最好地处理链上的异步事件 以下是我的设想: ObjectA引用ObjectB引用ObjectC引用ObjectD ObjectA对ObjectB进行调用,以此类推,最终导致ObjectD对外部系统进行异步调用 问题:我正在寻找推荐的最佳实践,如何让ObjectA进行非阻塞调用,然后从ObjectD获得异步完成结果的通知 我有它的工作与传递和链接事件处理程序下的层,但这似乎过于复杂,我担心的性能 关于

我有一组协作对象,我希望保持此结构完整,因为关注点分离、单一负责原则和测试能力

我面临的挑战是如何最好地处理链上的异步事件

以下是我的设想:

ObjectA引用ObjectB引用ObjectC引用ObjectD

ObjectA对ObjectB进行调用,以此类推,最终导致ObjectD对外部系统进行异步调用

问题:我正在寻找推荐的最佳实践,如何让ObjectA进行非阻塞调用,然后从ObjectD获得异步完成结果的通知

我有它的工作与传递和链接事件处理程序下的层,但这似乎过于复杂,我担心的性能

关于如何更好地处理这个问题,有什么建议吗


谢谢。

听起来你可能会从类似的事情中受益。它允许您订阅不同类型的事件,而不必担心是谁发布了事件。换句话说,ObjectA订阅了ObjectD发布的OperationCompleted事件,但ObjectA从未引用过ObjectD,也不知道它的存在。

听起来您可能会从类似的事件中受益。它允许您订阅不同类型的事件,而不必担心是谁发布了事件。换句话说,ObjectA订阅由ObjectD发布的OperationCompleted事件,但ObjectA从未引用过ObjectD或知道它存在。

您可以在中查看Messenger功能。它基本上是一个事件聚合器,就像Caleb Vear建议的那样。MVVM Light的主要目的是简化MVVM模式,但如果您只需要使用Messenger功能,则可以单独使用它。

您可以在中查看Messenger功能。它基本上是一个事件聚合器,就像Caleb Vear建议的那样。MVVM Light的主要目的是简化MVVM模式,但如果您只需要这些,您可以单独使用Messenger功能