我正在结合Castle Windsor和WCF Facility使用Caliburn (一个MVVM框架)。
我的Presenter类有一个构造函数依赖项,它实际上是一个WCF协定,将由Windsor容器提供。
我想要实现的是,如果找不到端点,该演示者显然无法显示,我希望显示一个视图,解释“无法定位显示此表单所需的网络服务。请稍后再试。”
将代码集中到Castle/Caliburn中的最佳方式是什么,以便显示相同的错误视图,无论应用程序中的哪个位置由于EndpointNotFoundException而无法解析presenter?
有什么想法吗?
我想避免不得不在所有presenter解析周围放一个“try/catch端点-找不到”,以防它依赖于WCF……
发布于 2010-12-23 04:05:47
一个快速(但在我看来有点脏)的解决方案可能是用一个救援过滤器来装饰所有调用的呈现器,从而允许一个救援方法来拦截那个特定的异常。如果您有一个共同的基类(您只需将其应用于共同的祖先),那么将筛选器应用于所有呈现者可能相对容易,否则您必须手动应用筛选器或自定义路由消息堆栈(这有点困难)。
您还可以使用代理而不是真正的服务来构建某种“惰性实例化”。在此代理中,您可以在try/catch处理程序下解析实际的WCF服务,如果内部解析失败,则会打开一个信息窗口。我不太喜欢这个解决方案,因为你没有关于调用上下文的线索,所以你可以向用户显示信息,即使它是不合适的。
我还想指出an elegant way to handle network outage,它自动禁用动作的启动点,打开需要网络连接的演示者。
https://stackoverflow.com/questions/4503852
复制相似问题