Caliburn - 异常处理和救援
我正在使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
方法
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
overridingDefaultConventionManager.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.
有一个非常简单的方法可以实现这一点,只需重写 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