2010-12-17 75 views
0

我在Caliburn 1.1.0中获取RescueAttribute时遇到了一些问题。基本上我打算在每个视图模型中放置一个通用的catch-all异常处理程序,但我似乎从未调用该方法。Caliburn问题 - RescueAttribute不起作用

[PerRequest( “ConfigurationGroupViewModel”)] [营救( “GeneralRescue”)] 公共类ConfigurationGroupViewModel:演示 {

................

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

}

我已经完全遵循什么是卡利文档中所指定的,我看到了一个post早些时候提到的一些关于IConventionManager但我担心的是,甚至直接把救援方法的ViewModel类本身的救援方法永远不会被调用。任何人都可以帮助我吗?

谢谢!

回答

0

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

  • 您是使用消息传递基础结构还是手动调用动作? (救援仅适用于第一种情况)
  • 您是否正在调用常规操作或协程(IEnumerable)?
+0

我在视图中通过cal调用操作:Message.Attach =“[Event Click] = [Action SomeActionNameOnVM]”,其中SomeActionNameOnVM方法在某处引发异常(例如抛出新的Exception() )。我期待Rescue方法(位于VM本身)在发生这种情况时被调用。我相信它是一个常规操作(它只是签名公共无效SomeActionNameOnVM())。 – bluebloodedboy 2010-12-20 03:58:26

+0

我找不出为什么它不起作用。我建议你检查源代码1.1(/ tags/Release 1.1)中的示例。如果你在使用它的时候仍然有问题,并且你可以建立一个这个问题的小问题,我一定会看看它。 – 2010-12-23 14:06:39

+0

我想我找到了问题。发生了什么事情是,我正在使用Visual Studio调试来测试这个功能,尽管我明确地抛出了异常(我在救援方法上放了一个断点),但我仍然感到沮丧,因为我的救援方法从未被调用过。看来,只有当我没有在调试模式下运行它时,该方法才会被调用(我试图在之后运行.exe文件,并调用了我的方法)。这是打算,还是这是Caliburn本身的缺陷? – bluebloodedboy 2011-01-11 04:53:58