2012-01-13 77 views
2

我有一组协作对象,并且由于关注点分离,单个负责任的原则和可测试性,我想保持此结构不变。事件在c#和silverlight中传递了一系列对象

我遇到的挑战是如何最好地处理链上的异步事件。

这里是我的场景:

ObjectA引用ObjectB引用ObjectC引用ObjectD。

ObjectA调用ObjectB等等,最终导致ObjectD对外部系统进行异步调用。

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

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

有关如何更好地处理此问题的任何建议?

谢谢。

回答

0

听起来好像你可能从EventAggregator.Net之类的东西中受益。它允许您订阅不同类型的活动,而无需担心发布活动的人员。换言之,ObjectA订阅由ObjectD发布的OperationCompleted事件,但ObjectA从未引用ObjectD或知道它存在。

0

您可以看看MVVM Light Toolkit中的Messenger功能。它基本上是一个类似于Caleb Vear所建议的事件聚合器。 MVVM Light的主要目的是促进MVVM模式,但如果您只需要这些功能,则可以使用自己的Messenger功能。