2010-12-17 66 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