【问题标题】:Caliburn issues - RescueAttribute not workingCaliburn 问题 - RescueAttribute 不起作用
【发布时间】:2010-12-17 08:11:09
【问题描述】:

我在让 Caliburn 1.1.0 中的 RescueAttribute 工作时遇到了一些问题。基本上我打算在每个视图模型中放置一个通用的包罗万象的异常处理程序,但我似乎永远不会调用该方法。

[PerRequest("ConfigurationGroupViewModel")] [救援(“一般救援”)] 公共类 ConfigurationGroupViewModel :演示者 {

.......

public void GeneralRescue(Exception ex) { MessageBox.Show(ex.Message); }

}

我完全按照 Caliburn 文档中的规定进行了操作,我之前看到 post 提到了有关 IConventionManager 的一些内容,但我担心的是,即使将救援方法直接放在 ViewModel 类本身上,救援方法也永远不会得到叫。任何人都可以帮助我吗?

谢谢!

【问题讨论】:

    标签: caliburn


    【解决方案1】:

    您能否提供一些其他细节?

    • 您是使用消息传递基础架构还是手动调用操作? (救援只在第一种情况下有效)
    • 您是在调用常规操作还是协程 (IEnumerable)?

    【讨论】:

    • 我正在通过 cal:Message.Attach="[Event Click] = [Action SomeActionNameOnVM]" 调用视图中的操作,其中在 SomeActionNameOnVM 方法中,某处抛出了异常(例如 throw new例外())。我期待在发生这种情况时调用 Rescue 方法(位于 VM 本身上)。我相信这是一个常规动作(它只有签名 public void SomeActionNameOnVM())。
    • 我无法弄清楚为什么它不起作用。我建议您查看 1.1 (/tags/Release 1.1) 的源代码中的示例。如果您仍然无法使其正常工作,并且您可以对该问题进行一个小型复制,我一定会看看它。
    • 我想我找到了问题所在。发生的事情是我正在使用 Visual Studio 调试测试此功能,尽管我明确地抛出异常(我在救援方法上设置了断点),但我的救援方法从未被调用让我感到沮丧。似乎只有当我不在调试模式下运行它时才会调用该方法(之后我尝试运行 .exe 文件并调用了我的方法)。这是有意为之,还是 Caliburn 本身的缺陷?
    • 抱歉非常回复晚了。据我所知,在有或没有调试器的情况下运行时救援行为不应该有差异。你有机会建立一个小型复制品吗?
    • 我无法用最新版本(1.1.0)重现这个问题,因此这个问题不再有效。
    猜你喜欢
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多