1

我将 Caliburn(一个 MVVM 框架)与 Castle Windsor 和 WCF Facility 结合使用。

我的 Presenter 类有一个构造函数依赖项,它实际上是由 Windsor 容器提供的 WCF 契约。

我想实现的是,如果找不到端点,显然无法显示该演示者,我想显示一个视图,解释“无法找到显示此表单所需的网络服务。请稍后再试。” .

连接到 Castle/Caliburn 以集中此代码的最佳方法是什么,以便显示相同的错误视图,无论应用程序中的哪个位置由于 EndpointNotFoundException 而无法解决演示者?

有任何想法吗?

我想避免在所有演示者分辨率周围放置一个“尝试/捕获端点未找到”,只是因为它取决于 WCF....

4

1 回答 1

1

一个快速(但在我看来有点脏)的解决方案可能是使用 Rescue 过滤器装饰所有调用演示者,从而允许救援方法拦截该特定异常。如果你有一个共同的基类(你只需要将它应用到共同的祖先),将过滤器应用到所有演示者可能会相对容易,否则你必须手动应用过滤器或自定义路由消息堆栈(这有点更难)。

您还可以使用代理而不是实际服务构建某种“延迟实例化”。在此代理中,您可以在 try/catch 处理程序下解析真正的 WCF 服务,如果内部解析失败,则打开一个信息窗口。我不太喜欢这种解决方案,因为您对调用上下文没有任何线索,因此即使信息不合适,您也可以向用户显示信息。

我还想指出一种处理网络中断的优雅方法,自动禁用打开需要网络连接的演示者的动作的启动点。

于 2010-12-22T20:05:46.880 回答