Caliburn - 异常处理和救援

发布于 2024-09-12 05:30:47 字数 211 浏览 5 评论 0原文

我正在使用 C# 和 Caliburn。

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

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

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

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

I'm using C# and Caliburn.

Is there a global way to catch all exceptions in all view models?

What about when there is some kind of exception during import from a DI/IoC container?

I basically want to display a message box when this occurs.

The RescueAttribute looks to me like it would have to be put on every single view model class, and it doesn't seem like it works when you use AsyncActionAttribute at the same time.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

白昼 2024-09-19 05:30:47

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

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

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

The method IConventionManager.ApplyActionCreationConventions(IAction action, IMethod targetMethod) is invoked just after an action creation and can add filters to it.

You can provide a custom IConventionManager overriding DefaultConventionManager.ApplyActionCreationConventions and pushing in the action a rescue filter.

Note that in this case you have to provide a rescue method on every ViewModel anyway; to overcome this, you can build a new custom rescue filter (following the line of the original one) and dispatch the exception to your infrastructure.

疾风者 2024-09-19 05:30:47

有一个非常简单的方法可以实现这一点,只需重写 Bootstrapper 中的 UnhandledException 方法即可。

这里有一个示例: 使用 Caliburn 的 WPF 应用程序中的全局处理异常.微

There is a really simple way to achieve this, just override the UnhandledException method in your Bootstrapper.

There is an example here: Global handling exception in WPF app with Caliburn.Micro

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文