3

我正在使用 C# 和 Caliburn。

是否有一种全局方法来捕获所有视图模型中的所有异常?

从 DI/IoC 容器导入时出现某种异常怎么办?

我基本上想在发生这种情况时显示一个消息框。

RescueAttribute 在我看来就像必须放在每个视图模型类上一样,当您同时使用 AsyncActionAttribute 时它似乎不起作用。

4

2 回答 2

2

该方法IConventionManager.ApplyActionCreationConventions(IAction action, IMethod targetMethod)在操作创建后立即调用,并且可以向其添加过滤器。

您可以提供自定义IConventionManager覆盖DefaultConventionManager.ApplyActionCreationConventions并在操作中推送救援过滤器。

请注意,在这种情况下,无论如何您都必须在每个 ViewModel 上提供救援方法;为了克服这个问题,您可以构建一个新的自定义救援过滤器(遵循原始过滤器的路线)并将异常分派到您的基础设施。

于 2010-08-11T23:40:38.087 回答
0

有一种非常简单的方法可以实现这一点,只需覆盖 Bootstrapper 中的 UnhandledException 方法。

这里有一个例子:Global handling exception in WPF app with Caliburn.Micro

于 2011-10-26T20:29:20.763 回答